问题描述
问题:CannotloadJDBCdriverclass'com.mysql.jdbc.Driver'Junit调试结果:01<codeid="code0">org.springframework.transaction.CannotCreateTransactionException:CouldnotopenJPAEntityManagerfortransaction;nestedexceptionisjavax.persistence.PersistenceException:org.hibernate.exception.GenericJDBCException:Cannotopenconnection02atorg.springframework.orm.jpa.JpaTransactionManager.doBegin(JpaTransactionManager.java:375)03atorg.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:374)04atorg.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:263)05atorg.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:101)06atorg.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)07atorg.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)08at$Proxy15.save(UnknownSource)09atcom.xsz.test.ProductTest.runtest(ProductTest.java:30)10atsun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethod)11atsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)12atsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)13atjava.lang.reflect.Method.invoke(Method.java:597)14atorg.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)15atorg.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)16atorg.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)17atorg.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)18atorg.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76)19atorg.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)20atorg.junit.runners.ParentRunner$3.run(ParentRunner.java:193)21atorg.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)22atorg.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)23atorg.junit.runners.ParentRunner.access$000(ParentRunner.java:42)24atorg.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)25atorg.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)26atorg.junit.runners.ParentRunner.run(ParentRunner.java:236)27atorg.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)28atorg.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)29atorg.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)30atorg.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)31atorg.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)32atorg.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)33Causedby:javax.persistence.PersistenceException:org.hibernate.exception.GenericJDBCException:Cannotopenconnection34atorg.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:614)35atorg.hibernate.ejb.TransactionImpl.begin(TransactionImpl.java:41)36atorg.springframework.orm.jpa.DefaultJpaDialect.beginTransaction(DefaultJpaDialect.java:70)37atorg.springframework.orm.jpa.JpaTransactionManager.doBegin(JpaTransactionManager.java:330)38...30more39Causedby:org.hibernate.exception.GenericJDBCException:Cannotopenconnection40atorg.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:126)41atorg.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:114)42atorg.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)43atorg.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:52)44atorg.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:449)45atorg.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:167)46atorg.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:142)47atorg.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:85)48atorg.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1353)49atorg.hibernate.ejb.TransactionImpl.begin(TransactionImpl.java:38)50...32more51Causedby:org.apache.commons.dbcp.SQLNestedException:CannotloadJDBCdriverclass'com.mysql.jdbc.Driver'52atorg.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1136)53atorg.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:880)54atorg.hibernate.ejb.connection.InjectedDataSourceConnectionProvider.getConnection(InjectedDataSourceConnectionProvider.java:46)55atorg.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:446)56...37more57Causedby:java.lang.ClassNotFoundException:com.mysql.jdbc.Driver58atjava.net.URLClassLoader$1.run(URLClassLoader.java:200)59atjava.security.AccessController.doPrivileged(NativeMethod)60atjava.net.URLClassLoader.findClass(URLClassLoader.java:188)61atjava.lang.ClassLoader.loadClass(ClassLoader.java:307)62atsun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)63atjava.lang.ClassLoader.loadClass(ClassLoader.java:252)64atjava.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)65atjava.lang.Class.forName0(NativeMethod)66atjava.lang.Class.forName(Class.java:169)67atorg.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1130)68...40more</code>bean.xml:01<codeid="code1"><?xmlversion="1.0"encoding="UTF-8"?>02<beansxmlns="http://www.springframework.org/schema/beans"03xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:aop="http://www.springframework.org/schema/aop"04xmlns:context="http://www.springframework.org/schema/context"xmlns:tx="http://www.springframework.org/schema/tx"05xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-2.5.xsd06http://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop-2.5.xsd07http://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-2.5.xsd08http://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx-2.5.xsd">09<context:annotation-config></context:annotation-config>10<!--自动匹配${**}与classpath:jdbc.properties的值-->11<beanclass="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">12<propertyname="location"value="classpath:jdbc.properties"></property>13</bean>14<!--数据库池-->15<beanid="dataSource"class="org.apache.commons.dbcp.BasicDataSource">16<propertyname="url"value="${db.url}"></property>17<propertyname="driverClassName"value="${db.driverclass}"></property>18<propertyname="username"value="${db.username}"></property>19<propertyname="password"value="${db.password}"></property>20<propertyname="maxActive"value="${db.maxActive}"></property>21<propertyname="maxIdle"value="${db.maxIdle}"></property>22<propertyname="maxWait"value="${db.maxWait}"></property>23<propertyname="minIdle"value="${db.minIdle}"></property>24</bean>25<!--实体管理工厂-->26<beanid="entityManagerFactory"27class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">28<!--myPersistenceXml对应persistence.xml中的persistence-unitname的值-->29<propertyname="persistenceUnitName"value="myPersistenceXml"></property>30<!--persistenceXmlLocationpersistence.xml存放路径-->31<propertyname="persistenceXmlLocation"value="META-INF/persistence.xml"></property>32<propertyname="dataSource"ref="dataSource"></property>33</bean>34<!--事务管理-->35<beanid="transactionManager"class="org.springframework.orm.jpa.JpaTransactionManager">36<propertyname="entityManagerFactory"ref="entityManagerFactory"/>37</bean>38<!--事务管理驱动-->39<tx:annotation-driventransaction-manager="transactionManager"/>40<!--自动扫描匹配-->41<context:component-scanbase-package="com.xsz"></context:component-scan>42</beans></code>jdbc.properties:db.url=jdbc:mysql://localhost:3306/myprojectdb.driverclass=com.mysql.jdbc.Driverdb.username=rootdb.password=123456db.maxActive=10db.maxIdle=5db.maxWait=4db.minIdle=2请各位大神帮忙,如何解决,谢谢!