我花了两天的时间试图找出为什么我的servlet没有连接到MySQL数据库。
我安装了MySQL并正常运行Eclipse。
每当我尝试建立连接时,我都会ClassNotFoundException
获得com.mysql.jdbc.Driver
,这实际上已正确导入。我正在使用的连接器是mysql-connector-java5.1.14
正确添加为外部jar,所以一切似乎都很好。这是我的代码:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String dbUrl="jdbc:mysql://localhost:3306/test";
String username="root";
String password="";
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
conn=DriverManager.getConnection(dbUrl);
System.out.println("Connected!");
} catch (SQLException e) {
e.printStackTrace();
System.out.println("not connected");
} catch(ClassNotFoundException x){
x.printStackTrace();
} catch(Exception e){
e.printStackTrace();
}
}
这是堆栈跟踪的一部分:
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1645)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1491)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:375)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:164)
我正在遵循已发布的Java书籍中的连接步骤。在论坛和教程中,我只看到相同的代码,无法弄清楚为什么抛出该异常。
在没有在服务器上运行的普通应用程序中,不会抛出异常并且连接(以完全相同的方式)成功。
你有什么建议吗?
答案 0 :(得分:3)
将mysql-connector-x.jar
放入WEB-INF/lib
答案 1 :(得分:1)
两种可能的解决方案:
1)当你创建WAR时,那里面的驱动程序是什么?你可以解压缩它(将.war文件重命名为.zip,看看它应该在/ WEB-INF / lib下。)Eclipse可能没有将它导出到WAR。
2)如果您使用Tomcat,是否将它放入Tomcat lib目录?如果没有,你要将哪个servlet容器部署到?
我注意到的一件事是,有时候,Java不喜欢有类空间。您应该能够通过将其包含在两个解决方案中的任何一个中来避免它,因此它成为相对路径,但您可以尝试消除空间并查看它是否有帮助。