Исключение Im phasing при вызове aop
02 февраля 2022 г., 12:58:03 org.springframework.context.support.AbstractApplicationContext71318ec4: дата запуска [02 февраля 12:58:03 IST 2022]; корень контекстной иерархии 02 февраля 2022 г. 12:58:03 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitionsINFO: загрузка определений компонентов XML из ресурса пути к классу [spring.xml] 02 февраля 2022 г. 12:58:04 PM org.springframework.context.support.AbstractApplicationContext Refresh ПРЕДУПРЕЖДЕНИЕ: Исключение во время инициализации контекста — отмена попытки обновления: org.springframework.beans.factory.BeanCreationException: Ошибка создания bean-компонента с именем «треугольник», определенным в ресурсе пути к классу [spring.xml ]: Инициализация bean-компонента не удалась; вложенным исключением является org.springframework.aop.framework.AopConfigException: неожиданное исключение AOP; вложенным исключением является java.lang.ExceptionInInitializerError Исключение в потоке «основной» org.springframework.beans.factory. BeanCreationException: ошибка при создании bean-компонента с именем «треугольник», определенным в ресурсе пути к классу [spring.xml]: инициализация bean-компонента не удалась; вложенным исключением является org.springframework.aop.framework.AopConfigException: неожиданное исключение AOP; вложенным исключением является java.lang.ExceptionInInitializerError в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:591) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:591) на org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:312) на org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228) на org.springframework. фасоль.фабрика. springframework.aop.framework.AopConfigException: Неожиданное исключение AOP; вложенным исключением является java.lang.ExceptionInInitializerError в org.springframework.aop.framework.CglibAopProxy.getProxy(CglibAopProxy.java:215) в org.springframework.aop.framework.ProxyFactory.getProxy(ProxyFactory.java:110) в org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.createProxy(AbstractAutoProxyCreator.java:473) в org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.wrapIfNecessary(AbstractAutoProxyCreator.java:355) в org.springframework.aop.framework.autoproxy.AbstractAutoProxy. .postProcessAfterInitialization(AbstractAutoProxyCreator.java:304) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsAfterInitialization(AbstractAutowireCapableBeanFactory.java:438) в org.
2 ответа
Мое первое предположение заключается в том, что вы хотите запустить более старую версию Spring на JRE 16+. Вероятно, эта старая версия Spring зависит от такой же устаревшей версии CGLIB, которая использует внутренние API-интерфейсы Java, которые теперь заблокированы из-за JEP 396 , который был реализован для Java 16. Возможно, вы можете просто обновить CGLIB и продолжать использовать свою старую версию Spring, возможно, вам нужно обновить оба. Без более подробной информации от вас трудно сказать. Минимальный пример проекта Maven или Gradle на GitHub, воспроизводящий проблему, был бы замечательным.
Если подумать, может быть, на данный момент вы можете обойтись без добавления
--add-opens java.base/java.lang=ALL-UNNAMED
в командную строку JVM. Но даже если бы это сработало, это не было бы особенно устойчивым решением, а лишь обходным путем.
Я смог исправить это сегодня (с JDK 17), обновив до SpringBoot 2.6.4 (в частности, вам нужна Spring Framework 5.3.16, поэтому, если вы используете плагин управления зависимостями Spring, вам нужно только установить версию Springboot на 2.6.4).
Похоже, что-то было исправлено в Spring Framework 5.3.16, что решило проблему без добавления
--add-opens
JVM вариант.
Для справки: у меня ошибка происходила из-за того, что я автоматически подключил bean-компонент Supplier (не для облачной функции Spring).