如何诊断MySQL JDBC驱动程序的ClassNotFound异常

时间:2011-03-16 21:29:20

标签: java mysql tomcat

我的webapp未能与MySQL建立连接,因错误而失败:

引起:java.lang.ClassNotFoundException:com.mysql.jdbc.Driver

现在mysql连接器jar显然位于我的类路径中:mysql-connector-java-5.0.7-bin.jar,位于WEB-INF / lib目录中。

因此,没有找到它是没有意义的。我猜它肯定会失败一些静态初始化。

有没有办法诊断这个问题?

1 个答案:

答案 0 :(得分:4)

虽然我没有提出任何好的诊断工具,但除了堆栈跟踪之外,我确实意识到发生了什么。自然地,堆栈跟踪有线索:

Cannot load JDBC driver class 'com.mysql.jdbc.Driver'
    at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1136)
    at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:880)

DataSource是在Web应用程序的context.xml文件中定义的,这意味着Tomcat使用父类加载器将驱动程序加载到Web应用程序。该类加载器无法访问应用程序的类路径。

解决方案是将mysql jar放入Tomcat的共享库目录。

另一种解决方案是将DataSource嵌入到应用程序中,而不是使用Tomcat的DataSource管理,从而允许Tomcat的库存分发。