JDBC Realm 身份验证 - ClassNotFoundException: com.mysql.jdbc.Dri



我知道这是一个重复的问题,但其他 15+ 线程的答案都没有帮助,或者我错过了什么。

我正在尝试在我的 JAX-WS java Web 应用程序中使用 JDBC Realm 实现身份验证,但我甚至无法通过连接到数据库。

这是我尝试过的:

  • 将连接器添加到应用结构中的 WEB-INF/lib 目录

  • 将其添加到构建路径

  • 将其添加到服务器的 $CATALINA-HOME/lib 中

  • 将 JRE、JDK CATALINA_HOME路径添加到 startap.bat

  • 清理项目

  • 删除临时文件夹的内容

环境变量:

  • 用户
  • 系统

用:

  • 阿帕奇-多米-加-1.7.4

  • jre1.8.0_161

  • jdk1.8.0_144

实际跟踪:

Apr 13, 2018 9:07:49 PM org.apache.catalina.realm.JDBCRealm getPassword
SEVERE: Exception performing authentication
java.sql.SQLException: com.mysql.jdbc.Driver
    at org.apache.catalina.realm.JDBCRealm.open(JDBCRealm.java:692)
    at org.apache.catalina.realm.JDBCRealm.getPassword(JDBCRealm.java:544)
    at org.apache.catalina.realm.RealmBase.getDigest(RealmBase.java:1266)
    at org.apache.catalina.realm.RealmBase.authenticate(RealmBase.java:420)
    at org.apache.catalina.realm.CombinedRealm.authenticate(CombinedRealm.java:111)
    at org.apache.tomee.catalina.TomEERealm.authenticate(TomEERealm.java:55)
    at org.apache.catalina.authenticator.DigestAuthenticator$DigestInfo.authenticate(DigestAuthenticator.java:708)
    at org.apache.catalina.authenticator.DigestAuthenticator.authenticate(DigestAuthenticator.java:275)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:577)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:436)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1078)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Unknown Source)
    at org.apache.catalina.realm.JDBCRealm.open(JDBCRealm.java:688)
    ... 20 more

尽管我很惭愧,但我不得不承认我在PC上使用了一个错误的tomEE版本,它甚至没有连接到eclipse,但我确信它是正确的,直到我检查了Eclipse的实际路径。

无论如何,正如

JDBC Realm所说,正如许多其他线程的答案所建议的那样,DBMS连接器.jar需要位于服务器lib目录($CATALINA-HOME/lib(中。

最新更新