对于正确的过程,请参阅Pascal的答案。
我的错误(由于未禁用LoadTimeWeaving)过程供参考。
我做了什么:
jpaVendorAdaptor为Hibernate
context-param
引起原因:java.lang.IllegalStateException:ClassLoader [org.apache.catalina.loader.WebappClassLoader]不提供’addTransformer(ClassFileTransformer)’方法。指定一个自定义LoadTimeWeaver或使用Spring的代理启动Java虚拟机:-javaagent:spring-agent.jar
<Loader loaderClass="org.springframework.instrument.classloading.tomcat.TomcatInstrumentableClassLoader"/>webapps / META-INF / context.xml中的未注释行。
<Loader loaderClass="org.springframework.instrument.classloading.tomcat.TomcatInstrumentableClassLoader"/>webapps / META-INF / context.xml
同样的错误。将该行添加到TOMCAT_HOME / context.xml
java.lang.NoClassDefFoundError: javax/transaction/SystemException at org.hibernate.ejb.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:39)
根据scaffman的建议,将javax.transaction的范围从测试更改为默认(只是删除了测试)。
运行良好!! 谢谢!
这是我所做的:
svn co https://src.springframework.org/svn/spring-samples/petclinic/trunk/ petclinic
cd 进入petclinic目录
cd
修改src/main/webapp/WEB-INF/spring/applicationContext-jpa.xml以使用Hibernate:
src/main/webapp/WEB-INF/spring/applicationContext-jpa.xml
<context:load-time-weaver>
jpaVendorAdapter
src/main/webapp/WEB-INF/web.xml
applicationContext-jpa.xml
pom.xml
<dependency> <groupId>javax.transaction</groupId> <artifactId>com.springsource.javax.transaction</artifactId> <version>1.1.0</version> <!--scope>test</scope--> </dependency>
mvn install
cp target/petclinic.war $TOMCAT_HOME/webapps
http://localhost:8080/petclinic