lundi 6 juillet 2015

Intellij won't use load-time weaving for unit tests?

I'm using Intellij 14.1.4 Ultimate, and trying to run a unit test. This test runs fine when called directly from Maven 3.3.1. But when I try running it from Intellij's JUnit configuration, it fails completely saying it can't initialize the load time weaver. I'm mystified by this, since it should be running exactly the same test. If you look at the Intellij command line it is loading the correct Spring jar, but the Spring jar balks at whatever classloader Intellij is using. Can anyone identify the problem and how to fix it?

Maven output (Intellij output further down):

mvn -Dtest=AccountRequestBaseSIDTest test
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building MyProject Online (Domain) DEV-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- build-helper-maven-plugin:1.7:parse-version (parse-version) @ MyProjectDomain ---
[INFO]
[INFO] --- jacoco-maven-plugin:0.6.3.201306030806:prepare-agent (jacoco-initialize) @ MyProjectDomain ---
[INFO] argLine set to -javaagent:C:\Users\tomw\.m2\repository\org\jacoco\org.jacoco.agent\0.6.3.201306030806\org.jacoco.agent-0.6.3.201306030806-runtime.jar=destfile=D:\JavaSoftware\workspace_frag2\FC
O\MyProjectDomain\target\jacoco.exec
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ MyProjectDomain ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 61 resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ MyProjectDomain ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] >>> hibernate3-maven-plugin:2.2:hbm2ddl (hsql) > process-resources @ MyProjectDomain >>>
[INFO]
[INFO] --- build-helper-maven-plugin:1.7:parse-version (parse-version) @ MyProjectDomain ---
[INFO]
[INFO] --- jacoco-maven-plugin:0.6.3.201306030806:prepare-agent (jacoco-initialize) @ MyProjectDomain ---
[INFO] argLine set to -javaagent:C:\Users\tomw\.m2\repository\org\jacoco\org.jacoco.agent\0.6.3.201306030806\org.jacoco.agent-0.6.3.201306030806-runtime.jar=destfile=D:\JavaSoftware\workspace_frag2\FC
O\MyProjectDomain\target\jacoco.exec -javaagent:C:\Users\tomw\.m2\repository\org\jacoco\org.jacoco.agent\0.6.3.201306030806\org.jacoco.agent-0.6.3.201306030806-runtime.jar=destfile=D:\JavaSoftware\wor
kspace_frag2\FCO\MyProjectDomain\target\jacoco.exec
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ MyProjectDomain ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 61 resources
[INFO]
[INFO] <<< hibernate3-maven-plugin:2.2:hbm2ddl (hsql) < process-resources @ MyProjectDomain <<<
[INFO]
[INFO] --- hibernate3-maven-plugin:2.2:hbm2ddl (hsql) @ MyProjectDomain ---
[INFO] Hibernate 3.3.1.GA
[INFO] hibernate.properties not found
[INFO] Bytecode provider name : javassist
[INFO] using JDK 1.4 java.sql.Timestamp handling
[INFO] No hibernate configuration file loaded.
[INFO] Configuration Properties file loaded: D:\JavaSoftware\workspace_frag2\FCO\MyProjectDomain\src\main\resources\properties\hibernate-hsql.properties
[INFO] Using dialect: org.hibernate.dialect.HSQLDialect
[INFO] Running hbm2ddl schema export
[INFO] writing generated schema to file: D:\JavaSoftware\workspace_frag2\FCO\MyProjectDomain\target\classes\database\MyProject.hsql
[INFO] schema export complete
[INFO]
[INFO] >>> hibernate3-maven-plugin:2.2:hbm2ddl (mysql) > process-resources @ MyProjectDomain >>>
[INFO]
[INFO] --- build-helper-maven-plugin:1.7:parse-version (parse-version) @ MyProjectDomain ---
[INFO]
[INFO] --- jacoco-maven-plugin:0.6.3.201306030806:prepare-agent (jacoco-initialize) @ MyProjectDomain ---
[INFO] argLine set to -javaagent:C:\Users\tomw\.m2\repository\org\jacoco\org.jacoco.agent\0.6.3.201306030806\org.jacoco.agent-0.6.3.201306030806-runtime.jar=destfile=D:\JavaSoftware\workspace_frag2\FC
O\MyProjectDomain\target\jacoco.exec -javaagent:C:\Users\tomw\.m2\repository\org\jacoco\org.jacoco.agent\0.6.3.201306030806\org.jacoco.agent-0.6.3.201306030806-runtime.jar=destfile=D:\JavaSoftware\wor
kspace_frag2\FCO\MyProjectDomain\target\jacoco.exec
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ MyProjectDomain ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 61 resources
[INFO]
[INFO] <<< hibernate3-maven-plugin:2.2:hbm2ddl (mysql) < process-resources @ MyProjectDomain <<<
[INFO]
[INFO] --- hibernate3-maven-plugin:2.2:hbm2ddl (mysql) @ MyProjectDomain ---
[INFO] No hibernate configuration file loaded.
[INFO] Configuration Properties file loaded: D:\JavaSoftware\workspace_frag2\FCO\MyProjectDomain\src\main\resources\properties\hibernate-mysql.properties
[INFO] Using dialect: org.hibernate.dialect.MySQL5InnoDBDialect
[INFO] Running hbm2ddl schema export
[INFO] writing generated schema to file: D:\JavaSoftware\workspace_frag2\FCO\MyProjectDomain\target\classes\database\MyProject.sql
[INFO] schema export complete
[INFO]
[INFO] --- exec-maven-plugin:1.1.1:exec (roles) @ MyProjectDomain ---
[INFO]
[INFO] --- exec-maven-plugin:1.1.1:exec (groups) @ MyProjectDomain ---
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ MyProjectDomain ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 56 resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ MyProjectDomain ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 203 source files to D:\JavaSoftware\workspace_frag2\FCO\MyProjectDomain\target\test-classes
[WARNING] /D:/JavaSoftware/workspace_frag2/FCO/MyProjectDomain/src/test/java/test/services/EmailServiceMockTest.java:[106,42] mergeTemplateIntoString(org.apache.velocity.app.VelocityEngine,java.lang.S
tring,java.util.Map<java.lang.String,java.lang.Object>) in org.springframework.ui.velocity.VelocityEngineUtils has been deprecated
[WARNING] /D:/JavaSoftware/workspace_frag2/FCO/MyProjectDomain/src/test/java/test/model/GroupStoreTest.java:[106,52] equals(java.lang.Object,java.lang.Object) in org.apache.commons.lang3.ObjectUtils h
as been deprecated
[WARNING] /D:/JavaSoftware/workspace_frag2/FCO/MyProjectDomain/src/test/java/test/model/GroupStoreTest.java:[130,52] equals(java.lang.Object,java.lang.Object) in org.apache.commons.lang3.ObjectUtils h
as been deprecated
[WARNING] /D:/JavaSoftware/workspace_frag2/FCO/MyProjectDomain/src/test/java/test/webservices/EPCPartTypeServiceTest.java: Some input files use unchecked or unsafe operations.
[WARNING] /D:/JavaSoftware/workspace_frag2/FCO/MyProjectDomain/src/test/java/test/webservices/EPCPartTypeServiceTest.java: Recompile with -Xlint:unchecked for details.
[INFO]
[INFO] --- maven-surefire-plugin:2.16:test (default-test) @ MyProjectDomain ---
[INFO] Surefire report directory: D:\JavaSoftware\workspace_frag2\FCO\MyProjectDomain\target\surefire-reports

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running test.services.AccountRequestBaseSIDTest
[AppClassLoader@6da21389] info AspectJ Weaver Version 1.7.3 built on Thursday Jun 13, 2013 at 19:41:31 GMT
[AppClassLoader@6da21389] info register classloader sun.misc.Launcher$AppClassLoader@6da21389
[AppClassLoader@6da21389] info using configuration /D:/JavaSoftware/workspace_frag2/FCO/MyProjectDomain/target/classes/META-INF/aop.xml
[AppClassLoader@6da21389] info using configuration file:/C:/Users/tomw/.m2/repository/org/springframework/spring-aspects/4.1.6.RELEASE/spring-aspects-4.1.6.RELEASE.jar!/META-INF/aop.xml
[AppClassLoader@6da21389] info register aspect com.oreillyauto.aspects.HsqlSanitizer
[AppClassLoader@6da21389] info register aspect org.springframework.beans.factory.aspectj.AnnotationBeanConfigurerAspect
[AppClassLoader@6da21389] info register aspect org.springframework.scheduling.aspectj.AnnotationAsyncExecutionAspect
[AppClassLoader@6da21389] info register aspect org.springframework.transaction.aspectj.AnnotationTransactionAspect
[AppClassLoader@6da21389] info register aspect org.springframework.cache.aspectj.AnnotationCacheAspect
[AppClassLoader@6da21389] info register aspect org.springframework.cache.aspectj.JCacheCacheAspect
[AppClassLoader@6da21389] error can't determine superclass of missing type org.springframework.cache.jcache.interceptor.JCacheAspectSupport
 [Xlint:cantFindType]
[AppClassLoader@6da21389] warning javax.* types are not being woven because the weaver option '-Xset:weaveJavaxPackages=true' has not been specified
[AppClassLoader@6da21389] error can't determine annotations of missing type javax.cache.annotation.CachePut
when weaving type org.hsqldb.jdbc.JDBCDriver
when weaving classes
when weaving
 [Xlint:cantFindType]
[AppClassLoader@6da21389] error can't determine annotations of missing type javax.cache.annotation.CacheResult
when weaving type org.hsqldb.jdbc.JDBCDriver
when weaving classes
when weaving
 [Xlint:cantFindType]
[AppClassLoader@6da21389] error can't determine annotations of missing type javax.cache.annotation.CacheRemove
when weaving type org.hsqldb.jdbc.JDBCDriver
when weaving classes
when weaving
 [Xlint:cantFindType]
[AppClassLoader@6da21389] error can't determine annotations of missing type javax.cache.annotation.CacheRemoveAll
when weaving type org.hsqldb.jdbc.JDBCDriver
when weaving classes
when weaving
 [Xlint:cantFindType]
2015-07-06 13:46:23,776 WARN  [main] net.rubyeye.xmemcached.XMemcachedClient - XMemcachedClient use Text protocol
2015-07-06 13:46:24,080 WARN  [main] com.google.code.yanf4j.core.impl.AbstractController - The Controller started at localhost/127.0.0.1:0 ...
2015-07-06 13:46:24,178 WARN  [Xmemcached-Reactor-0] com.google.code.yanf4j.core.impl.AbstractController - Add a session: 172.18.10.41:11211
Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 18.804 sec - in test.services.AccountRequestBaseSIDTest
2015-07-06 13:46:28,670 WARN  [Thread-12] com.google.code.yanf4j.core.impl.AbstractController - Remove a session: 172.18.10.41:11211

Results :

Tests run: 4, Failures: 0, Errors: 0, Skipped: 0

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 29.614 s
[INFO] Finished at: 2015-07-06T13:46:28-07:00
[INFO] Final Memory: 46M/1643M
[INFO] ------------------------------------------------------------------------

Intellij Output:

"C:\Program Files\Java\jdk1.7.0_79\bin\java" -ea -Dhost=local -XX:MaxPermSize=256m -javaagent:C:\Users\me\.m2\repository/org/springframework/spring-instrument/4.0.6.RELEASE/spring-instrument-4.0.6.RELEASE.jar -Didea.launcher.port=7532 "-Didea.launcher.bin.path=C:\Program Files (x86)\JetBrains\IntelliJ IDEA 14.1.4\bin" -classpath "C:\Program Files (x86)\JetBrains\IntelliJ IDEA 14.1.4\lib\idea_rt.jar;C:\Program Files (x86)\JetBrains\IntelliJ IDEA 14.1.4\lib\util.jar" -Dfile.encoding=windows-1252 com.intellij.rt.execution.CommandLineWrapper C:\Users\me\AppData\Local\Temp\classpath17.tmp com.intellij.rt.execution.application.AppMain com.intellij.rt.execution.junit.JUnitStarter -ideVersion5 test.services.AccountRequestBaseSIDTest @@@method,C:\Users\tomw\AppData\Local\Temp\command.line2
2015-07-06 13:32:13,701 ERROR [main] org.springframework.test.context.TestContextManager - Caught exception while allowing TestExecutionListener [org.springframework.test.context.support.DependencyInjectionTestExecutionListener@6eae8c99] to prepare test instance [test.services.AccountRequestBaseSIDTest@590c994]
java.lang.IllegalStateException: Failed to load ApplicationContext
    at org.springframework.test.context.CacheAwareContextLoaderDelegate.loadContext(CacheAwareContextLoaderDelegate.java:99)
    at org.springframework.test.context.TestContext.getApplicationContext(TestContext.java:122)
    at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java:109)
    at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java:75)
    at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:321)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:211)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:288)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:284)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:231)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:88)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
    at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
    at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:71)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:174)
    at org.junit.runner.JUnitCore.run(JUnitCore.java:160)
    at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:78)
    at com.intellij.rt.execution.junit.JUnitForkedStarter.main(JUnitForkedStarter.java:61)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at com.intellij.rt.execution.CommandLineWrapper.main(CommandLineWrapper.java:130)
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.context.weaving.AspectJWeavingEnabler#0': Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'loadTimeWeaver': Initialization of bean failed; nested exception is java.lang.IllegalStateException: ClassLoader [java.net.URLClassLoader] 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
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:547)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:303)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:299)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
    at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:167)
    at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:606)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:462)
    at org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:120)
    at org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:60)
    at org.springframework.test.context.support.AbstractDelegatingSmartContextLoader.delegateLoading(AbstractDelegatingSmartContextLoader.java:100)
    at org.springframework.test.context.support.AbstractDelegatingSmartContextLoader.loadContext(AbstractDelegatingSmartContextLoader.java:248)
    at org.springframework.test.context.CacheAwareContextLoaderDelegate.loadContextInternal(CacheAwareContextLoaderDelegate.java:64)
    at org.springframework.test.context.CacheAwareContextLoaderDelegate.loadContext(CacheAwareContextLoaderDelegate.java:91)
    ... 27 more
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'loadTimeWeaver': Initialization of bean failed; nested exception is java.lang.IllegalStateException: ClassLoader [java.net.URLClassLoader] 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
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:547)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:303)

Aucun commentaire:

Enregistrer un commentaire