我使用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)
答案 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”