Java Web项目时报出如下错误:
java.lang.ClassNotFoundException: com.mysql.jdbc:Driver
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:307)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:169)
at mail.main(mail.java:114)
数据库连接的主要代码:
// JDBC 驱动名及数据库 URL static final String JDBC_DRIVER = "com.mysql.jdbc.Driver"; static final String DB_URL = "jdbc:mysql://localhost:3306/RUNOOB"; // 数据库的用户名与密码,需要根据自己的设置 static final String USERNAME = "root"; static final String PASSWORD = "123456"; Connection conn = null; try{ // 注册 JDBC 驱动器 Class.forName("com.mysql.jdbc.Driver"); // 打开一个连接 conn = DriverManager.getConnection(DB_URL, USERNAME, PASSWORD); }catch(Exception e){ // 处理 Class.forName 错误 e.printStackTrace(); }报出这个错误之后,我首先检查了一下自己的项目中是否有mysql-connector-java-x.x.xx-bin.jar,发现项目中是有这个包的,
并且在一个测试类的main方法里测试是可以正常连接到数据库的,但是切到时Web项目运行时,还是会报这个错误。
总结下原因:
在 java 项目中,只需要在 Eclipse 中引入 mysql-connector-java-5.1.39-bin.jar 就可以运行java项目。所以你如果只是在main方法里测试是可以正常连接数据库的。
但是在 Eclipse web 项目中,当执行 Class.forName("com.mysql.jdbc.Driver");时 不会去查找驱动的。
所以一个简单的 JDBC + Servlet 实现的小Web项目,我们可以把 mysql-connector-java-5.1.39-bin.jar 拷贝到 tomcat 下 lib 目录。
参考文章: