无法通过servlet连接到mysql

时间:2011-01-29 07:06:25

标签: java mysql eclipse servlets jar

我花了两天的时间试图找出为什么我的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书籍中的连接步骤。在论坛和教程中,我只看到相同的代码,无法弄清楚为什么抛出该异常。

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

你有什么建议吗?

2 个答案:

答案 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不喜欢有类空间。您应该能够通过将其包含在两个解决方案中的任何一个中来避免它,因此它成为相对路径,但您可以尝试消除空间并查看它是否有帮助。