我在我的演示应用程序中包含了mysql jdbc驱动程序。
/tmp/jettytmp$ find . -name "*.jar"
./jetty-0.0.0.0-8080-auth-0.1.war-_auth-any-7537667183570190622.dir/webapp/WEB-INF/lib/mysql-connector-java-5.1.38.jar
然而,当我尝试登录我的演示应用程序时,抛出java.lang.ClassNotFoundException:
java.lang.ClassNotFoundException: org.gjt.mm.mysql.Driver
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:191)
at org.eclipse.jetty.security.JDBCLoginService.connectDatabase(JDBCLoginService.java:197)
at org.eclipse.jetty.security.JDBCLoginService.loadUser(JDBCLoginService.java:238)
at org.eclipse.jetty.security.MappedLoginService.login(MappedLoginService.java:221)
at org.eclipse.jetty.security.JDBCLoginService.login(JDBCLoginService.java:222)
at org.eclipse.jetty.security.authentication.LoginAuthenticator.login(LoginAuthenticator.java:61)
at org.eclipse.jetty.security.authentication.FormAuthenticator.login(FormAuthenticator.java:194)
at org.eclipse.jetty.security.authentication.FormAuthenticator.validateRequest(FormAuthenticator.java:270)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:512)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:215)
at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:110)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
at org.eclipse.jetty.server.Server.handle(Server.java:499)
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311)
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)
at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)
at java.lang.Thread.run(Thread.java:745)
2016-03-12 15:41:32.894:WARN:oejs.JDBCLoginService:qtp1980086877-13: UserRealm Admin Login could not load user information from database
java.sql.SQLException: Can't connect to database
从日志中,我们可以看到JDBCLoginService尝试连接到数据库,但找不到jdbc驱动程序。但是jdbc驱动程序已经包含在演示应用程序中了?如何解决这个问题,任何评论都表示赞赏。 我的码头verison是9.2。我使用以下命令启动演示应用程序: java -jar / * / jetty-distribution-9.2.15.v20160210 / start.jar
答案 0 :(得分:3)
您正在使用MySQL驱动程序的过时/历史包名称。您应该在应用程序的配置中更新到com.mysql.jdbc.Driver
,如文档here所示:
使用MySQL Connector / J,此类的名称为com.mysql.jdbc.Driver。
完成此操作后,将在运行时在类路径中找到mysql-connector-java-5.1.x.jar
。
有关MySQL JDBC驱动程序配置的详细信息及其用法,请访问官方MySQL Connector/J (JDBC) Reference。
最新的MySQL JDBC连接器可用于download here。