我的 webapp 无法连接到 MySQL,失败并出现错误:
引起:java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
现在 mysql 连接器 jar 显然在我的类路径中:mysql-connector-java-5.0.7-bin.jar,在 WEB-INF/lib 目录中。
所以说“找不到”是没有意义的。我猜它一定是某些静态初始化失败了。
有什么方法可以诊断这个问题吗?
最佳答案
虽然我没有想出任何好的诊断实用程序,但除了堆栈跟踪之外,我确实意识到发生了什么。堆栈跟踪自然有线索:
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 发行版。
关于java - 如何诊断 MySQL JDBC 驱动程序的 ClassNotFound 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5332026/