2017-01-08 2 views
0

У меня есть jsp webapp, который отлично работает, когда я запускаю его в Tomcat 8.5 на моем локальном хосте, но когда я его размещаю на сервере, я получаю Не могу загрузить драйвер исключение.Не удается загрузить класс драйвера JDBC 'org.neo4j.jdbc.Driver'

(В случае, если она должна делать никакой разницы сервер является Ubuntu 16 работает на Amazon EC2)

Я проверил, что сосуд находится в домашней папке/Lib. У пользователя, работающего с tomcat, есть права (работает jstl jar). Я попытался перезагрузить дезамон и перезапустить службу.

Я искал множество тем по этому вопросу, но не могу найти правильный ответ (хотя я уверен, что он там).

Это мой (отношение) контекст:

<Resource name="jdbc/MyDB" 
     auth="Container" 
     type="javax.sql.DataSource" 
     username="myname" 
     password="mypass" 
     driverClassName="org.neo4j.jdbc.Driver" 
     url="jdbc:neo4j:bolt://localhost" 
     maxActive="8" 
     maxIdle="4"/> 

(имя и пароль, очевидно, не реальный)

Это код из класса, который выставляет ошибку:

 Context initContext = new InitialContext(); 
     Context webContext = (Context)initContext.lookup("java:/comp/env"); 
     DataSource ds = (DataSource) webContext.lookup("jdbc/MyDB"); 
     con = ds.getConnection(); 

Это мой StackTrace:

Unfortunately something went wrong. This to be specific: 
java.sql.SQLException: Cannot load JDBC driver class 'org.neo4j.jdbc.Driver' 
at org.apache.tomcat.dbcp.dbcp2.BasicDataSource.createConnectionFactory(BasicDataSource.java:2145) 
at org.apache.tomcat.dbcp.dbcp2.BasicDataSource.createDataSource(BasicDataSource.java:2037) 
at org.apache.tomcat.dbcp.dbcp2.BasicDataSource.getConnection(BasicDataSource.java:1543) 
at myapp.model.neo4j.LoginHandler.login(LoginHandler.java:24) 
at myapp.control.LoginServlet.doPost(LoginServlet.java:27) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:648) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) 
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) 
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198) 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) 
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:474) 
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) 
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) 
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:624) 
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349) 
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:783) 
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) 
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:789) 
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1437) 
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
at java.lang.Thread.run(Thread.java:745) 
Caused by: java.lang.ClassNotFoundException: org.neo4j.jdbc.Driver 
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1285) 
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1119) 
at org.apache.tomcat.dbcp.dbcp2.BasicDataSource.createConnectionFactory(BasicDataSource.java:2136) 
... 28 more 
+0

Когда вы говорите, что в 'дома/lib', что вы имеете в виду с этим? Драйвер (и все необходимые зависимости) должен находиться в папке 'lib' tomcat (также называемой' $ CATALINA_HOME/lib', см. Http://stackoverflow.com/questions/11496280/how-do-i-find-the -value-of-catalina-home –

+0

Когда я говорю домой, я ссылаюсь на (что должно быть) $ CATALINA_HOME/lib. Будет проверять этот пост, чтобы узнать, есть ли что-то подозрительное в этом пути. – oht

+0

Запуск $ ps aux | grep catalina Я получаю -Dcatalina.base =/opt/tomcat -Dcatalina.home =/opt/tomcat. Именно там, где у меня есть папка lib. – oht

ответ

0

Убедитесь, что вы используете соответствующий neo4j-jdbc-driver-3.0.1.jar.

(не какой-либо другой файл с похожим именем, как Neo4j-JDBC-3.0.1.jar)

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