Spring Boot, @Configurable LoadTimeWeaving, Tomcat 8 — IllegalStateException

В моем приложении Spring Boot 1.3.3, Tomcat 8 (встроенное для разработки, автономное для производства) я собираюсь перейти от транзакционного режима Spring Proxy к транзакциям AspectJ.

Я добавил следующую конфигурацию приложения:

@EnableAsync
@ComponentScan("com.example")
@EntityScan("com.example")
@EnableJpaRepositories("com.example")
@EnableTransactionManagement(mode=AdviceMode.ASPECTJ)
@EnableLoadTimeWeaving(aspectjWeaving=AspectJWeaving.ENABLED)
@Configuration
public class ApplicationConfiguration implements LoadTimeWeavingConfigurer {

    @Override
    public LoadTimeWeaver getLoadTimeWeaver() {
        return new ReflectiveLoadTimeWeaver();
    }

}

но во время запуска приложения на Embedded Tomcat 8 (не проверял его на автономном Tomcat) я получил следующее исключение:

Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.instrument.classloading.LoadTimeWeaver]: Factory method 'loadTimeWeaver' threw exception; nested exception is java.lang.IllegalStateException: ClassLoader [sun.misc.Launcher$AppClassLoader] does NOT provide an 'addTransformer(ClassFileTransformer)' method.
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:189)
    at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:588)
    ... 18 common frames omitted
Caused by: java.lang.IllegalStateException: ClassLoader [sun.misc.Launcher$AppClassLoader] does NOT provide an 'addTransformer(ClassFileTransformer)' method.

Что не так/отсутствует в моей конфигурации и как решить эту проблему?


person alexanoid    schedule 14.05.2016    source источник
comment
Я также получаю ту же ошибку   -  person anubhava    schedule 06.07.2016


Ответы (1)


Я сам видел это в прошлом, и я считаю, что вам нужно запускать свое приложение с агентом java, чтобы включить плетение во время загрузки со встроенным tomcat. Подготовьте jar-файлы aspectjweaver и spring-instrument и попробуйте запустить приложение с помощью:

java -javaagent:path/to/aspectjweaver-1.8.2.jar -javaagent:path/to/spring-instrument.jar -jar path/to/your/app.jar
person zybreak    schedule 11.04.2017