似乎无法让我的春天web应用与码头Maven的pluging工作
我总是得到
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'loadTimeWeaver': Initialization of bean failed; nested exception is java.lang.IllegalStateException: ClassLoader [org.eclipse.jetty.webapp.WebAppClassLoader] does NOT provide an 'addTransformer(ClassFileTransformer)' method. Specify a custom LoadTimeWeaver or start your Java virtual machine with Spring's agent: -javaagent:org.springframework.instrument.jar
虽然我有:
- 设置MAVEN_OPTS到javaagent:/Users/blabla/.m2/repository/org/springframework/spring-instrument/3.1.3.RELEASE/spring-instrument-3.1.3.RELEASE.jar
- 设置JAVA_OPTIONS同一件事
- 加入到DEP 弹簧仪器和弹簧方面
- 加入
jvmArgs
与-javaagent:....
到码头-行家-插件配置
也许你缺少几个罐子aspectjweaver
aspectjrt
spring-instrument
此外,你可能想尝试明确界定豆loadTimeWeaver
在applicationContext.xml文件。
<property name="loadTimeWeaver">
<bean id="instrumentationLoadTimeWeaver" class="org.springframework.instrument.classloading.InstrumentationLoadTimeWeaver"/>
</property>
当启动从Maven的码头(使用命令mvn码头:运行),码头将在同一个JVM上运行的行家做,所以你需要通过使用MAVEN_OPTS任何选项。
(请务必javaagent前减号,因为我没有看到,在你的代码段)。
出口MAVEN_OPTS = -javaagent:org.springframework.instrument-3.0.5.RELEASE.jar
的加载时间使用Maven在码头织一个完整的例子可以在Github找到。
https://github.com/zzantozz/testbed/tree/master/spring-aspectj-load-time-weaving-in-jetty
没有你的pom.xml文件的详细信息......这并不容易。 但随着码头插件的一个共同问题是依赖关系。
总是为我工作的一个规则是把你的一切战争的依赖与作为Maven的码头 - 插件直接依赖关系提供范围。
我建议你把弹簧仪及弹簧方面的行家,码头,插件的直接依赖了。
根据我的理解:
设置MAVEN_OPTS到javaagent:/Users/blabla/.m2/repository/org/springframework/spring-instrument/3.1.3.RELEASE/spring-instrument-3.1.3.RELEASE.jar
是通过JVM参数传递给码头JVM(因为码头运行在相同的JVM行家)的正确方式
我有同样的问题, 我使用的加载时间在春季织。 如何设置类加载器在码头? 。 我已经加入了解决它“-Xbootclasspath / A:[路径罐子]”作为JvmArgs PARAM。
现在,它的样子
<extraJvmArgs>-Xmx4g -XX:MaxPermSize=512m -javaagent:C:\Users\auldanov\.m2\repository\org\springframework\spring-instrument\3.1.4.RELEASE\spring-instrument-3.1.4.RELEASE.jar -Xbootclasspath/a:C:\Users\auldanov\.m2\repository\org\springframework\spring-instrument\3.1.4.RELEASE\spring-instrument-3.1.4.RELEASE.jar</extraJvmArgs>
我终于做到了以下工作从ddewaele的例子。 所以从这样做除了
- 设置MAVEN_OPTS到javaagent:/Users/blabla/.m2/repository/org/springframework/spring-instrument/3.1.3.RELEASE/spring-instrument-3.1.3.RELEASE.jar
你必须检查你已经添加的依赖关系。 我错过了春天-TX。 你需要有这些依赖关系:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>3.0.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>3.0.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.6.10</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>3.0.5.RELEASE</version>
</dependency>
<!-- Following dependencies are required because of spring-aspects -->
<dependency>
<groupId>org.hibernate.javax.persistence</groupId>
<artifactId>hibernate-jpa-2.0-api</artifactId>
<version>1.0.0.Final</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>3.0.5.RELEASE</version>
</dependency>
否则,你得到的是不直观的错误
指定自定义的LoadTimeWeaver或使用Spring的代理启动Java虚拟机:-javaagent:org.springframework.instrument.jar
注意:您可以使用任何你想要的春天版本。 我使用的3.2.5的一切。
想提醒大家好! 这个问题是非常不清楚。 不包括这依赖于你的项目或提供的范围包括。
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-instrument</artifactId>
<version>${thirdparty.spring.version}</version>
</dependency>
否则(装载剂时,第二连接,同时第一库)代理类InstrumentationSavingAgent将加载两次,弹簧将使用第二类实例,而无需注入仪器