无法通过servlet连接到mysql

问题描述:

我花了2天的时间试图找出为什么我的servlet没有连接到MySQL数据库。无法通过servlet连接到mysql

我安装了MySQL并正常工作并使用Eclipse。

每当我尝试建立连接,我得到一个ClassNotFoundExceptioncom.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

啊! Good ol'ClassNotFound。您可能需要将MySQL jar复制到您的应用程序服务器的lib目录中。 – Nishant 2011-01-29 07:36:43

两个可能的解决方案:

1)当你创建了战争,是驱动器内部?您可以将其解压缩(将.war文件重命名为.zip,只需看一下 - 它应该位于/ WEB-INF/lib下)。Eclipse可能不会将它导出到WAR。

2)如果你使用的是Tomcat,你把它放到了Tomcat的lib目录下吗?如果不是,您将部署哪个servlet容器?

我注意到的一件事是,有时候,Java不喜欢存在类的空间。您应该能够通过将它包含在两种解决方案中的任何一种中来避免它,以便它成为相对路径,但是您可以尝试消除空间并查看是否有帮助。

+0

谢谢!!!!!!! – JBoy 2011-01-29 08:54:50

放置在mysql-connector-x.jarWEB-INF/lib