2016-08-25 3 views
2

Я создал демо-версию Spring web application как доказательство концепции. Он отлично работает, когда я запускаю класс JettyWrapper (встроенный Jetty). Однако когда я пытаюсь запустить runty 9 с помощью плагина gretty, я получаю ClassNotFoundException из HikariCP, даже добавляя HikariCP в путь класса plugin.ClassNotFoundException HikariCP с плагином gretty с помощью Jetty 9

jetty.xml config file 

    ... 
    <New class="com.zaxxer.hikari.HikariDataSource"> 
     <Arg> 
      <New id="hikariConfig" class="com.zaxxer.hikari.HikariConfig"> 
       <Set name="poolName"><SystemProperty name="hikaricp.poolName" default="HikariCP"/></Set> 
       <Set name="driverClassName"><SystemProperty name="hikaricp.driverClassName" default="org.hsqldb.jdbc.JDBCDriver"/></Set> 
       <Set name="idleTimeout"><SystemProperty name="hikaricp.idleTimeout" default="10000"/></Set> 
       <Set name="maximumPoolSize"><SystemProperty name="hikaricp.maximumPoolSize" default="5"/></Set> 
       <Set name="username"><SystemProperty name="hikaricp.username" default="SA"/></Set> 
       <Set name="password"><SystemProperty name="hikaricp.password" default=""/></Set> 
       <Set name="jdbcUrl"><SystemProperty name="hikaricp.jdbcUrl" default="jdbc:hsqldb:hsql://localhost/demodb"/></Set> 
       <Set name="connectionTestQuery"><SystemProperty name="hikaricp.connectionTestQuery" default="SET DATABASE SQL SYNTAX MYS TRUE"/></Set> 
       <Set name="connectionInitSql"><SystemProperty name="hikaricp.connectionInitSql" default="SET DATABASE SQL SYNTAX MYS TRUE"/> 
       </Set> 
      </New> 
     </Arg> 
    </New> 
    ... 


Exception in thread "main" java.lang.ClassNotFoundException: com.zaxxer.hikari.HikariDataSource 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
    at org.eclipse.jetty.util.Loader.loadClass(Loader.java:86) 
    at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.nodeClass(XmlConfiguration.java:364) 
    at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.newObj(XmlConfiguration.java:754) 
    at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.itemValue(XmlConfiguration.java:1125) 
    at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.value(XmlConfiguration.java:1030) 
    at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.newObj(XmlConfiguration.java:775) 
    at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.configure(XmlConfiguration.java:423) 
    at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.configure(XmlConfiguration.java:298) 
    at org.eclipse.jetty.xml.XmlConfiguration.configure(XmlConfiguration.java:248) 
    at org.eclipse.jetty.xml.XmlConfiguration$configure.call(Unknown Source) 
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48) 
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113) 
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125) 
    at org.akhikhl.gretty.JettyConfigurerImpl.applyJettyXml(JettyConfigurerImpl.groovy:64) 
    at org.akhikhl.gretty.JettyConfigurer$applyJettyXml$0.call(Unknown Source) 

Если кто-то может помочь с любыми советами и/или направлениями, будем признательны.

Редакция:После того как я получил эту проблему решить, я нашел новую проблему, связанную, что заставило меня another post. В этом случае у меня было несколько дополнительных ресурсов, которые нужно добавить в путь к классам (configs dir), и я провел пару часов, пока не нашел не документированную функцию. Теперь все работает нормально.

ответ

1

Как вы добавляете библиотеку в путь Gretty?

я сделал что-то подобное с этой линии в моем gradle.build:

dependencies { ///... gretty 'my:library:version' }

И это работало большое

http://akhikhl.github.io/gretty-doc/Servlet-container-classpath.html

Кстати, я также использую HikariCP в веб-приложении, запущенном Gretty, но в моем случае я запускаю пул программно, а библиотека Hikari находится в пути класса webapp, а не в контейнере.

+0

Большое спасибо, я попробую. –

+0

Зависимость 'gretty' отлично работает для меня, спасибо за помощь –

+1

Хорошая вещь, чтобы использовать пул связи в контейнере, можно разделить через webapps через' JNDI', следовательно, оптимизировать соединения с базой данных. У меня есть несколько веб-приложений, использующих одну и ту же базу данных, и в моем случае это кажется более подходящим. –

Смежные вопросы