Java p6spy无法为com.mysql.jdbc.driver找到合适的驱动程序

Java p6spy无法为com.mysql.jdbc.driver找到合适的驱动程序,java,hibernate,tomcat,jdbc,p6spy,Java,Hibernate,Tomcat,Jdbc,P6spy,在ubuntu 14.04操作系统上使用tomcat 7、tomcat-jdbc.jar、p6spy 2.14、C3p0和hibernate 我的p6spy.jar驻留在我的cp中的/usr/share/tomcat7/lib中。spy.properties文件通过系统属性正确地传递给tomcat hibernate.cfg.xml的相关部分 <hibernate-config> <driver_class>com.p6spy.engine.spy.P6Spy

在ubuntu 14.04操作系统上使用tomcat 7、tomcat-jdbc.jar、p6spy 2.14、C3p0和hibernate

我的p6spy.jar驻留在我的cp中的/usr/share/tomcat7/lib中。spy.properties文件通过系统属性正确地传递给tomcat

hibernate.cfg.xml的相关部分

<hibernate-config>
      <driver_class>com.p6spy.engine.spy.P6SpyDriver</driver_class>
      <url>jdbc:p6spy:mysql://myhost:3306/mydatabase</url>
      <username>xxx</username>
      <password>xxx</password>
</hibernate-config>

我不知道为什么我找不到这个司机。这可能是某种类加载错误吗?在将mysql-connector-java-5.1.37-bin.jar添加到我的CP后,我能够让tomcat通过p6spy驱动程序传递找到sql驱动程序,但随后我抛出了一个链接异常


不过,我最终还是让p6spy在我的tomcat7/hibernate配置上正确运行了,方法是降级到p6spy v1.3,并在相应的1.3格式spy.properties文件中设置“deregisterdrivers=true”

使用P6Spy 2.X,您需要在spy.properties中设置driverlist=com.mysql.jdbc.Driver


P6Spy 1.3将自动注册驱动程序,有时会导致重复注册。这就是为什么1.3还设置了注销驱动程序的原因。

面对这个问题,今天变得疯狂了。
滚动我的日志,我意识到Java 6不支持我的ojdbc驱动程序。配置Java 7,一切都很顺利。

您需要将MySQL连接器/J驱动程序添加到应用程序的类路径中(在tomcat libs文件夹或应用程序的WEB-INF/libs文件夹中),谢谢@markrotVeel缺少连接器/J是问题的一部分。在添加mysql-connector-java-5.1.37-bin.jar之后,我出现了一个链接错误,但tomcat确实找到了一个“合适的驱动程序”,所以+1。
Warning: Error registering driver names: [com.mysql.jdbc.Driver]
Caused By: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
com.p6spy.engine.spy.P6DriverNotFoundError: Error registering driver names: [com.mysql.jdbc.Driver]
Caused By: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
        at com.p6spy.engine.spy.P6ModuleManager.loadDriversExplicitly(P6ModuleManager.java:220)
        at com.p6spy.engine.spy.P6ModuleManager.<init>(P6ModuleManager.java:130)
        at com.p6spy.engine.spy.P6ModuleManager.initMe(P6ModuleManager.java:73)
        at com.p6spy.engine.spy.P6ModuleManager.<clinit>(P6ModuleManager.java:61)...
WARN [com.mchange.v2.resourcepool.BasicResourcePool]: com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@309efc1f -- Acquisition Attempt Failed!!! Clearing pending acquires. While trying to acquire a needed new resource, we failed to succeed more than the maximum number of allowed acquisition attempts (30). Last acquisition attempt exception:
java.sql.SQLException: Unable to find a driver that accepts jdbc:mysql://devtestrds.cdsug1b8degu.us-west-1.rds.amazonaws.com:3306/biz_eng
        at com.p6spy.engine.spy.P6SpyDriver.findPassthru(P6SpyDriver.java:119)
        at com.p6spy.engine.spy.P6SpyDriver.connect(P6SpyDriver.java:94)
        at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:135)
        at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:182)
        at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:171)
        at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:137)
        at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1014)
        at com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:32)
        at com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1810)
        at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)