无法通过servlet连接到mysql
我花了2天的时间试图找出为什么我的servlet没有连接到MySQL数据库。无法通过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书的连接步骤。在论坛和教程中,我只看到了相同的代码,无法弄清楚为什么抛出异常。
在没有运行在服务器上的正常应用程序中,不会抛出异常,并且连接(以完全相同的方式)成功。
你有什么建议吗?
两个可能的解决方案:
1)当你创建了战争,是驱动器内部?您可以将其解压缩(将.war文件重命名为.zip,只需看一下 - 它应该位于/ WEB-INF/lib下)。Eclipse可能不会将它导出到WAR。
2)如果你使用的是Tomcat,你把它放到了Tomcat的lib目录下吗?如果不是,您将部署哪个servlet容器?
我注意到的一件事是,有时候,Java不喜欢存在类的空间。您应该能够通过将它包含在两种解决方案中的任何一种中来避免它,以便它成为相对路径,但是您可以尝试消除空间并查看是否有帮助。
谢谢!!!!!!! – JBoy 2011-01-29 08:54:50
放置在mysql-connector-x.jar
WEB-INF/lib
啊! Good ol'ClassNotFound。您可能需要将MySQL jar复制到您的应用程序服务器的lib目录中。 – Nishant 2011-01-29 07:36:43