【问题标题】:jetty can't load mysql jdbc driver码头无法加载mysql jdbc驱动程序
【发布时间】:2016-03-13 03:11:02
【问题描述】:

我已经在我的演示应用程序中包含了 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 驱动程序已经包含在演示应用程序中了吗?如何解决这个问题,任何 cmets 都会受到赞赏。 我的码头版本是 9.2。我使用以下命令启动演示应用程序: java -jar /*/jetty-distribution-9.2.15.v20160210/start.jar

【问题讨论】:

    标签: mysql jdbc jetty


    【解决方案1】:

    您正在为 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

    【讨论】:

      猜你喜欢
      • 2017-01-15
      • 2011-09-04
      • 2013-03-03
      • 2015-10-10
      • 2017-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多