1

我使用 Eclipse 朱诺。我的构建路径中有 mysql-connector-java-5.1.22-bin.jar,我尝试建立与我的 mysql 数据库的数据库连接。这是我的代码

public Connection getConnectionToDB() {
    try {
        Class.forName(driver);
        Connection con = DriverManager.getConnection(url + dbName,
                userName, password);
        return con;
    } catch (Exception e) {
        e.printStackTrace();
    }
    return null;
}

当我调试它时,我发现问题出在:

Class.forName(driver);

我也尝试将其替换为:

Class.forName(driver).newInstance();

在这一行,它爆发到异常并抛出此异常:

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1676)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1521)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:169)
at main.jdbc.BaseJdbc.getConnectionToDB(BaseJdbc.java:18)
at main.jdbc.UserDriverJdbc.queryUserById(UserDriverJdbc.java:15)
at main.drivers.UserDriver.findUserById(UserDriver.java:50)
at main.drivers.UserDriver.isLoginValid(UserDriver.java:56)
at main.controllers.LoginController.doPost(LoginController.java:33)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
at org.apache.catalina.core.StandardContextValve.__invoke(StandardContextValve.java:164)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462)
at org.apache.catalina.core.StandardHostValve.__invoke(StandardHostValve.java:164)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:562)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:395)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:250)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:188)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:166)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:302)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
4

5 回答 5

2

答案对我来说很难找到,但我想通了。这当然是类路径问题。

如果您遇到过这样的问题并尝试在 eclipse 中解决它,请转到

eclipse -> 窗口 -> 首选项 -> java -> buildpath -> 类路径

并添加

“mysql-connector-java-5.1.22-bin.jar”

作为新变量。随便取个名字就行。希望这可以帮助。

于 2012-10-17T19:12:03.017 回答
0

您需要确保在项目中加载了正确的库和 jar 文件。在使用 postgresql 时,我经常处理这个问题。我认为您只是缺少 jar 文件。

于 2012-10-16T17:33:21.980 回答
0

这是我的问题,在这里得到了回答: SO Link

“如果此代码在您的 J2SE 中有效,则意味着您需要在某处包含 com.mysql.jdbc.Driver 类(所谓的 JDBC 驱动程序)的 JAR 文件。此 JAR 需要在 Tomcat 中可见。所以,我建议放置mysql-jdbc.jar 在物理位置到您项目的 /WEB-INF/lib 目录。” 从

于 2013-10-09T14:42:57.913 回答
0

我一直在到处寻找解决方案。也许这不是您的解决方案,但是使用 Eclipse 我正在导出为 JAR 文件并得到相同的异常,但随后导出为“可运行的 JAR”并且它起作用了。

于 2017-05-06T20:17:32.690 回答
0

如果您使用netbeans,请执行以下操作:转到您的应用程序>>>库>>添加jar(通过右键单击)>>“mysql-connector-java-5.1.22-bin.jar”

于 2017-07-16T08:16:05.633 回答