编辑:有关正确的程序,请参阅Pascal的答案。
我的错(因为我没有禁用LoadTimeWeaving)程序留待参考..:
我做了什么:
jpaVendorAdaptor
设置为Hibernate。context-param
从applicationContext-jdbc.xml更改为applicationContext-jpa.xml 推出tomcat。看到了
引起:java.lang.IllegalStateException:ClassLoader [org.apache.catalina.loader.WebappClassLoader]不提供'addTransformer(ClassFileTransformer)'方法。指定自定义LoadTimeWeaver或使用Spring的代理启动Java虚拟机:-javaagent:spring-agent.jar
在webapps / META-INF / context.xml中取消注释行<Loader loaderClass="org.springframework.instrument.classloading.tomcat.TomcatInstrumentableClassLoader"/>
。
部署没有错误。但是,当我做某事时会发出错误说
java.lang.NoClassDefFoundError: javax/transaction/SystemException at org.hibernate.ejb.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:39)
11.根据scaffman的建议,将javax.transaction的范围从测试更改为默认(刚刚删除的测试)。
12.Runs罚款!!谢谢!
答案 0 :(得分:9)
好的,这就是我的所作所为:
查看petclinic样本:
svn co https://src.springframework.org/svn/spring-samples/petclinic/trunk/ petclinic
cd
进入petclinic目录
src/main/webapp/WEB-INF/spring/applicationContext-jpa.xml
以使用Hibernate:
<context:load-time-weaver>
(load-time weaver SHOULD NOT be used with Hibernate,这是Toplink)jpaVendorAdapter
(注释Toplink部分,取消注释Hibernate部分)src/main/webapp/WEB-INF/web.xml
以使用applicationContext-jpa.xml
在战争中修改pom.xml
以捆绑 jta.jar (由@skaffman指出):
<dependency>
<groupId>javax.transaction</groupId>
<artifactId>com.springsource.javax.transaction</artifactId>
<version>1.1.0</version>
<!--scope>test</scope-->
</dependency>
建立战争
mvn install
将其部署到Tomcat
cp target/petclinic.war $TOMCAT_HOME/webapps
浏览
http://localhost:8080/petclinic
答案 1 :(得分:1)
看起来像PetClinic包装有问题:
http://forum.springsource.org/showthread.php?t=85042
和
http://jira.springframework.org/browse/SPR-6880
pom.xml