在buildpath中找不到与mysql连接器相同的com.mysql.jdbc.Driver

时间:2012-10-16 17:28:49

标签: mysql jdbc mysql-connector

我使用Eclipse juno。我的buildpath中有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)

5 个答案:

答案 0 :(得分:2)

答案对我来说非常棘手,但我发现了。这是当然的类路径问题。

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

   eclipse - >窗口 - >偏好 - > java - > buildpath - >类路径

并添加

  

“MySQL的连接器的Java-5.1.22-bin.jar”

作为新变量。无论你喜欢什么,都可以命希望这会有所帮助。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

我一直在寻找解决方案。也许这不是你的解决方案,但使用Eclipse我导出为JAR文件并得到相同的异常,但随后导出为“Runnable JAR”并且它有效。

答案 4 :(得分:0)

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