我使用Eclipsejuno,在我的构建路径中有mysql-connector-java-5.1.22-bin.jar,我尝试建立到mysql数据库的DB连接。
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)
6条答案
按热度按时间ckocjqey1#
答案对我来说很难找到,但我找到了。这当然是类路径问题。
如果您曾经遇到过这样的问题并尝试在eclipse中解决它,请访问
Eclipse-〉窗口-〉首选项-〉java-〉构建路径-〉类路径
并添加
"mysql-连接器-java-5.1.22-文件夹. jar"
作为一个新的变量。你可以随意命名它。希望这对你有帮助。
yb3bgrhw2#
你需要确保在你的项目中加载了正确的库和jar文件,我在使用postgresql的时候经常处理这个问题,我认为你只是缺少jar文件。
vwhgwdsa3#
这是我的问题,在这里得到了回答:SO链接
“如果这段代码能在你的J2 SE中工作,这意味着你需要有一个JAR文件,其中包含com.mysql.jdbc.Driver类(所谓的JDBC驱动程序)。这个JAR需要在Tomcat中可见。所以,我建议把mysql-jdbc.jar放在你项目的/WEB-INF/lib目录的物理位置。”From
z9zf31ra4#
我一直在到处寻找一个解决方案。也许这不是你的解决方案,但使用Eclipse我是作为一个JAR文件导出,并得到同样的异常,但后来作为“可运行的JAR“导出,它的工作。
ctehm74n5#
如果您使用netbeans,请执行以下操作:转到你的应用程序〉〉〉库〉〉添加jar(通过右键单击)〉〉“mysql-connector-java-5.1.22-bin.jar”
ve7v8dk26#
在Eclipse中,转到窗口-〉首选项-〉Java-〉构建路径-〉类路径变量-〉新建
现在添加您的Mysql连接器jar文件,你从Mvn存储库或任何地方下载...现在ApplyAndClose...重新启动服务器,它会工作...
注意:如果您使用Servlet,那么请从包中而不是从安装程序中使用eclipse。如果您将使用安装程序,您将遇到很多问题