java - 意外的AOP异常;嵌套异常是 java.lang.IllegalStateException : Unable to load cache item

标签 java spring spring-aop

Spring boot应用程序版本2.1.5.RELEASE已升级到版本2.2.5.RELEASE,即

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.5.RELEASE</version>
<!--    <version>2.1.5.RELEASE</version> -->
    </parent>

后台java也已从版本11升级到13,即“

openjdk 11 2018-09-25

openjdk版本“13”2019-09-17

购买升级后,我注意到我的集成测试(> 60)都不起作用。我能够从我的项目中编译 jar 文件,但没有一个测试成功。它们都显示出下面提到的相同异常。有趣的是,这些测试在更改之前是有效的。我注意到 Stackoveflow 上有一个更确切的问题,即 java.lang.VerifyError: Stack map does not match the one at exception handle但也没有答案。

我在谷歌上找到的关于类似异常签名的唯一内容是那两个页面(不幸的是我看不懂中文) https://gitmemory.com/issue/eclipse/openj9/5676/489772592https://blog.csdn.net/Zhao_yanpeng/article/details/102835149

在上一篇文章中,有人提到它正在与 openjdk“12.0.1”一起使用,但我当前正在运行版本 13,但我仍然遇到该异常。

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userRepositoryImpl' defined in file [Projects/server/target/classes/org/server/Repository/account/user/impl/UserRepositoryImpl.class]: Initialization of bean failed; nested exception is org.springframework.aop.framework.AopConfigException: Unexpected AOP exception; nested exception is java.lang.IllegalStateException: Unable to load cache item
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:603)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:517)
    at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:323)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:321)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)
    at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:276)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1287)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1207)
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:640)
    ... 121 more
Caused by: org.springframework.aop.framework.AopConfigException: Unexpected AOP exception; nested exception is java.lang.IllegalStateException: Unable to load cache item
    at org.springframework.aop.framework.CglibAopProxy.getProxy(CglibAopProxy.java:214)
    at org.springframework.aop.framework.ProxyFactory.getProxy(ProxyFactory.java:110)
    at org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.createProxy(AbstractAutoProxyCreator.java:471)
    at org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.wrapIfNecessary(AbstractAutoProxyCreator.java:350)
    at org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.postProcessAfterInitialization(AbstractAutoProxyCreator.java:299)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsAfterInitialization(AbstractAutowireCapableBeanFactory.java:431)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1800)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:595)
    ... 130 more
Caused by: java.lang.IllegalStateException: Unable to load cache item
    at org.springframework.cglib.core.internal.LoadingCache.createEntry(LoadingCache.java:79)
    at org.springframework.cglib.core.internal.LoadingCache.get(LoadingCache.java:34)
    at org.springframework.cglib.core.AbstractClassGenerator$ClassLoaderData.get(AbstractClassGenerator.java:134)
    at org.springframework.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:319)
    at org.springframework.cglib.proxy.Enhancer.createHelper(Enhancer.java:569)
    at org.springframework.cglib.proxy.Enhancer.createClass(Enhancer.java:416)
    at org.springframework.aop.framework.ObjenesisCglibAopProxy.createProxyClassAndInstance(ObjenesisCglibAopProxy.java:57)
    at org.springframework.aop.framework.CglibAopProxy.getProxy(CglibAopProxy.java:205)
    ... 137 more
Caused by: java.lang.VerifyError: Stack map does not match the one at exception handler 9
Exception Details:
  Location:
    org/server/Repository/account/user/impl/UserRepositoryImpl$$EnhancerBySpringCGLIB$$f765df37.<init>()V @9: athrow
  Reason:
    Current frame's flags are not assignable to stack map frame's.
  Current Frame:
    bci: @0
    flags: { flagThisUninit }
    locals: { uninitializedThis }
    stack: { 'java/lang/RuntimeException' }
  Stackmap Frame:
    bci: @9
    flags: { }
    locals: { }
    stack: { 'java/lang/Throwable' }
  Bytecode:
    0000000: 2a59 b702 8bb8 0192 b1bf bb01 9c5a 5fb7
    0000010: 019f bf                                
  Exception Handler Table:
    bci [0, 9] => handler: 9
    bci [0, 9] => handler: 9
    bci [0, 9] => handler: 10
  Stackmap Table:
    full_frame(@9,{},{Object[#390]})
    same_locals_1_stack_item_frame(@10,Object[#390])

    at java.base/java.lang.Class.forName0(Native Method)
    at java.base/java.lang.Class.forName(Class.java:398)
    at org.springframework.cglib.core.ReflectUtils.defineClass(ReflectUtils.java:571)
    at org.springframework.cglib.core.AbstractClassGenerator.generate(AbstractClassGenerator.java:363)
    at org.springframework.cglib.proxy.Enhancer.generate(Enhancer.java:582)
    at org.springframework.cglib.core.AbstractClassGenerator$ClassLoaderData$3.apply(AbstractClassGenerator.java:110)
    at org.springframework.cglib.core.AbstractClassGenerator$ClassLoaderData$3.apply(AbstractClassGenerator.java:108)
    at org.springframework.cglib.core.internal.LoadingCache$2.call(LoadingCache.java:54)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    at org.springframework.cglib.core.internal.LoadingCache.createEntry(LoadingCache.java:61)
    ... 144 more

我正在使用 Spring 工具套件版本:4.5.1.RELEASE 内部版本号:202001211336 进行开发(如果这在某种程度上有用并且 jar 文件在 Linux 5.3.0-40-generic 内核上运行)。

非常感谢任何如何进一步调试的想法或提示。

2020 年 3 月 10 日更新:以下是在 Keith 和 Kriegaex 的帮助下有效的解决方案:

我添加了工件spectjrt和aspectjweaver及其相应的版本1.9.5。然后我将工件 javassist 的版本升级到 3.26.0-GA,将 cglib-nodep 升级到 3.3.0,并删除工件 spring-aop。之后所有测试都恢复正常。

最佳答案

在我的例子中,它的版本问题,spring-aop依赖中的spring-core版本与我声明的spring-core依赖不同,使用相同的版本修复了问题

关于java - 意外的AOP异常;嵌套异常是 java.lang.IllegalStateException : Unable to load cache item,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60601994/

相关文章:

spring - Spring Boot 和 RestAssured 中的模拟 session

java - 如何将业务逻辑和电子邮件发送功能分开?

java - Spring AOP代理 session bean在 session 超时后保留,仅在容器重启后死亡

java - 回读多个对象时出现流损坏异常

java - 对整数进行升序和降序排序

java - Spring反序列化带有额外列的manytomany表

使用模拟进行 Spring Controller 测试

Java Jackson 将普通 Json 数组或 Json 对象反序列化为单个 Java 对象 (POJO)

java - "command"spring MVC 3 中的 modelName 魔法值

java - Spring 每个方法都应该使用 AOP 代理 bean 调用