我的webapp未能与MySQL建立连接,因错误而失败:
引起:java.lang.ClassNotFoundException:com.mysql.jdbc.Driver
现在mysql连接器jar显然位于我的类路径中:mysql-connector-java-5.0.7-bin.jar,位于WEB-INF / lib目录中。
因此,没有找到它是没有意义的。我猜它肯定会失败一些静态初始化。
有没有办法诊断这个问题?
答案 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的库存分发。