У меня есть 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
Когда вы говорите, что в 'дома/lib', что вы имеете в виду с этим? Драйвер (и все необходимые зависимости) должен находиться в папке 'lib' tomcat (также называемой' $ CATALINA_HOME/lib', см. Http://stackoverflow.com/questions/11496280/how-do-i-find-the -value-of-catalina-home –
Когда я говорю домой, я ссылаюсь на (что должно быть) $ CATALINA_HOME/lib. Будет проверять этот пост, чтобы узнать, есть ли что-то подозрительное в этом пути. – oht
Запуск $ ps aux | grep catalina Я получаю -Dcatalina.base =/opt/tomcat -Dcatalina.home =/opt/tomcat. Именно там, где у меня есть папка lib. – oht