ClassLoader НЕ предоставляет метод addTransformer (ClassFileTransformer) - PullRequest
3 голосов
/ 09 августа 2011

Я использую Spring и AspectJ, чтобы сделать хорошее переплетение, и я только столкнулся с этой проблемой после вставки <context:load-time-weaver/> в контекст моего приложения:

Caused by: java.lang.IllegalStateException: ClassLoader [sun.misc.Launcher$AppClassLoader] 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.context.weaving.DefaultContextLoadTimeWeaver.setBeanClassLoader(DefaultContextLoadTimeWeaver.java:83)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeAwareMethods(AbstractAutowireCapableBeanFactory.java:1419)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1391)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:513)
    ... 21 common frames omitted

Нужна ли мне собственная JVM для запуска AspectJ?!?Я не могу вспомнить, чтобы я делал это раньше.

Ответы [ 2 ]

4 голосов
/ 09 августа 2011

Я не могу найти какую-либо документацию, подтверждающую это, но я вполне уверен, что стандартная JVM не поддерживает стиль ткачества Spring во время загрузки. Руководство Spring по включению LTW в различных средах подразумевает, что это относится к разделу «Общие приложения Java» .

1 голос
/ 26 октября 2016

Возможно, вы используете какой-то другой класс LoadTimeWeaver, как в моем случае это был org.springframework.instrument.classloading.websphere.WebSphereLoadTimeWeaver из spring-context-3.1.1.RELEASE.jar.Моя проблема была в spring-instrument-3.1.1.RELEASE.jar находился в иерархии классов с более высокой позицией, чем jar контекста Spring.Который использовался в качестве агента по умолчанию.

Решение, которое работало для меня: я только что принес банку инструмента после весеннего контекста в только что исчезнувшей иерархической ошибке classpath.

...