无法通过servlet连接到mysql

我花了两天时间试图找出为什么我的servlet没有连接到MySQL数据库。

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

每当我尝试建立连接时,我都会获得com.mysql.jdbc.DriverClassNotFoundException ,它实际上是正确导入的。 我正在使用的连接器是作为外部jar正确添加的mysql-connector-java5.1.14 ,所以一切似乎都很好。 这是我的代码:

  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书中的连接步骤。 在论坛和教程中,我只看到相同的代码,无法弄清楚为什么会抛出exception。

在不在服务器上运行的普通应用程序上,不会抛出exception并且连接(以完全相同的方式)成功。

你有什么建议吗?

两种可能的方案:

1)当你创建WAR时,那里面有那个驱动程序吗? 你可以解压缩它(将.war文件重命名为.zip并只看一下 – 它应该在/ WEB-INF / lib下。)Eclipse可能没有将它导出到WAR。

2)如果您使用Tomcat,是否将它放入Tomcat lib目录? 如果没有,您部署到哪个servlet容器?

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

mysql-connector-x.jar放在WEB-INF/lib