There is a VERY similar question我的,但就我而言,我的构建路径中没有任何重复的 jar,因此该解决方案对我不起作用。我已经在谷歌上搜索了几个小时,但我在那里找到的解决方案都没有真正解决我的问题。我正在为作业创建一个具有一些数据库连接的网站。我正在使用 MySQL 数据库,在 Eclipse 中开发并在 Windows 上运行。
我不断收到 java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
代码如下:
import java.sql.*;
//...
public void someMethodInMyServlet(PrintWriter out)
{
Connection connection = null;
PreparedStatement query = null;
try {
out.println("Create the driver instance.<br>");
Class.forName("com.mysql.jdbc.Driver").newInstance();
out.println("Get the connection.<br>");
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "secret");
query = connection.prepareStatement( "SELECT * FROM customers");
//...
} catch (Exception e)
{
out.println(e.toString()+"<br>");
}
}
//...
当我运行上面的代码时,我得到以下输出:
Create the driver instance.
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
它没有通过 Class.forName...
行,我不明白为什么!这是我所做的:
- 下载 mysql 连接器。
- 将其放入我的 MySQL 文件夹
C:\Program Files\MySQL\mysql-connector-java-5.1.12\mysql-connector-java-5.1.12-bin.jar
。 - 在 Eclipse 中打开项目属性。
- 将外部 Jar 添加到我的构建路径,我选择了
mysql-connector-java-5.1.12-bin.jar
。
每次我尝试使用 servlet 时,我都会遇到相同的错误,无论我是否有 jar 在那里。你能帮我解决这个问题吗?
最佳答案
对于 Web 应用程序要使用的 JAR 文件风格的每个“第 3 方”库,只需将物理 JAR 文件复制/拖放到 Web 应用程序的 /WEB-INF/lib
.然后它将在 webapp 的默认类路径中可用。此外,Eclipse 足够聪明,可以注意到这一点。无需麻烦构建路径。但是,请务必删除您之前添加的所有不必要的引用,否则它可能会发生冲突。
另一种方法是通过将物理 JAR 文件放入服务器自己的 /lib
文件夹中,将其安装在服务器本身中。当您使用服务器提供的 JDBC 连接池数据源时,这是必需的,而这又需要 MySQL JDBC 驱动程序。
另见:
- > How to add JAR libraries to WAR project without facing java.lang.ClassNotFoundException? Classpath vs Build Path vs /WEB-INF/lib
- > How should I connect to JDBC database / datasource in a servlet based application?
- > Where do I have to place the JDBC driver for Tomcat's connection pool?
- > JDBC CLASSPATH Not Working
关于eclipse - 如何在 Eclipse web 项目中安装 JDBC 驱动程序而不会遇到 java.lang.ClassNotFoundexception,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20925219/