我正在学习春季样本。在petclinic项目中,默认情况下它使用jdbc。我将以下行更改为jpa,并且不能再运行它
/WEB-INF/spring/applicationContext-jpa.xml
以下是错误消息:
Caused by: java.lang.IllegalStateException: ClassLoader [org.apache.catalina.loader.WebappClassLoader] does NOT provide an 'addTransformer(ClassFileTransformer)' method. Specify a custom LoadTimeWeaver or start your Java virtual machine with Spring's agent: -javaagent:spring-agent.jar
at org.springframework.context.weaving.DefaultContextLoadTimeWeaver.setBeanClassLoader(DefaultContextLoadTimeWeaver.java:83)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeAwareMethods(AbstractAutowireCapableBeanFactory.java:1418)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1389)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:512)
... 35 more
任何回复都会非常有帮助。
答案 0 :(得分:7)
默认的Tomcat类加载器不支持Load-Time Weaving所需的类转换。你需要使用Spring提供的那个。
首先,将org.springframework.instrument-3.0.0.RELEASE.jar
复制到tomcat安装的lib
文件夹
然后修改src/main/webapp/META-INF/context.xml
并取消注释以下行:
<Loader loaderClass="org.springframework.instrument.classloading.tomcat.TomcatInstrumentableClassLoader"/>
或者你可以摆脱LTW并使用Hibernate作为JPA提供者。请参阅下面的相关问题。