最近一次jenkins部署运行springboot项目时出现如下错误:java.lang.VerifyError: JVMCFRE090

Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.redisson.api.RedissonClient]: Factory method 'redisson' threw exception; nested exception is java.lang.VerifyError: JVMCFRE090 new bytecode cannot create arrays; class=jdk/internal/reflect/GeneratedSerializationConstructorAccessor55, method=newInstance([Ljava/lang/Object;)Ljava/lang/Object;, pc=0
Exception Details:
  Location:
    jdk/internal/reflect/GeneratedSerializationConstructorAccessor55.newInstance([Ljava/lang/Object;)Ljava/lang/Object; @0: JBnew
  Reason:
    Error exists in the bytecode.
  Exception Handler Table:
    bci [0, 24] => handler: 28
    bci [0, 24] => handler: 28
    bci [24, 27] => handler: 40
        at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185)
        at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:651)
        ... 58 common frames omitted
Caused by: java.lang.VerifyError: JVMCFRE090 new bytecode cannot create arrays; class=jdk/internal/reflect/GeneratedSerializationConstructorAccessor55, method=newInstance([Ljava/lang/Object;)Ljava/lang/Object;, pc=0
Exception Details:
  Location:
    jdk/internal/reflect/GeneratedSerializationConstructorAccessor55.newInstance([Ljava/lang/Object;)Ljava/lang/Object; @0: JBnew
  Reason:
    Error exists in the bytecode.
  Exception Handler Table:
    bci [0, 24] => handler: 28
    bci [0, 24] => handler: 28
    bci [24, 27] => handler: 40
        at java.base/jdk.internal.misc.Unsafe.defineClass0(Native Method)
        at java.base/jdk.internal.misc.Unsafe.defineClass(Unsafe.java:1510)
        at java.base/jdk.internal.reflect.ClassDefiner.defineClass(ClassDefiner.java:63)
        at java.base/jdk.internal.reflect.MethodAccessorGenerator$1.run(MethodAccessorGenerator.java:400)
        at java.base/jdk.internal.reflect.MethodAccessorGenerator$1.run(MethodAccessorGenerator.java:394)
        at java.base/java.security.AccessController.doPrivileged(AccessController.java:678)
        at java.base/jdk.internal.reflect.MethodAccessorGenerator.generate(MethodAccessorGenerator.java:393)
        at java.base/jdk.internal.reflect.MethodAccessorGenerator.generateSerializationConstructor(MethodAccessorGenerator.java:112)
        at java.base/jdk.internal.reflect.ReflectionFactory.generateConstructor(ReflectionFactory.java:514)
        at java.base/jdk.internal.reflect.ReflectionFactory.newConstructorForSerialization(ReflectionFactory.java:427)
        at jdk.unsupported/sun.reflect.ReflectionFactory.newConstructorForSerialization(ReflectionFactory.java:103)
        at org.nustaq.serialization.FSTDefaultClassInstantiator.findConstructorForSerializable(FSTDefaultClassInstantiator.java:107)
        at org.nustaq.serialization.FSTClazzInfo.<init>(FSTClazzInfo.java:137)
        at org.nustaq.serialization.FSTClazzInfoRegistry.getCLInfo(FSTClazzInfoRegistry.java:129)
        at org.nustaq.serialization.FSTClazzNameRegistry.addClassMapping(FSTClazzNameRegistry.java:98)
        at org.nustaq.serialization.FSTClazzNameRegistry.registerClassNoLookup(FSTClazzNameRegistry.java:85)
        at org.nustaq.serialization.FSTClazzNameRegistry.registerClass(FSTClazzNameRegistry.java:81)
        at org.nustaq.serialization.FSTConfiguration.addDefaultClazzes(FSTConfiguration.java:839)
        at org.nustaq.serialization.FSTConfiguration.initDefaultFstConfigurationInternal(FSTConfiguration.java:477)
        at org.nustaq.serialization.FSTConfiguration.createDefaultConfiguration(FSTConfiguration.java:472)
        at org.nustaq.serialization.FSTConfiguration.createDefaultConfiguration(FSTConfiguration.java:464)
        at org.redisson.codec.FstCodec.<init>(FstCodec.java:182)
        at org.redisson.config.Config.<init>(Config.java:111)
        at org.redisson.Redisson.<init>(Redisson.java:62)
        at org.redisson.Redisson.create(Redisson.java:104)
        at org.redisson.spring.starter.RedissonAutoConfiguration.redisson(RedissonAutoConfiguration.java:172)
        at org.redisson.spring.starter.RedissonAutoConfiguration$$EnhancerBySpringCGLIB$$7893fe3f.CGLIB$redisson$3(<generated>)
        at org.redisson.spring.starter.RedissonAutoConfiguration$$EnhancerBySpringCGLIB$$7893fe3f$$FastClassBySpringCGLIB$$125aa8a9.invoke(<generated>)
        at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:244)
        at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:331)
        at org.redisson.spring.starter.RedissonAutoConfiguration$$EnhancerBySpringCGLIB$$7893fe3f.redisson(<generated>)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:566)
        at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154)
        ... 59 common frames omitted

该错误主要原因是由于部分class文件或者依赖包的jdk编译的字节码在不同的jvm上无法被正确的识别导致;

问题产生的环境为:

        开发使用jdk9, jenkins使用jdk9, docker容器环境使用adoptopenjdk/openjdk11-openj9,期间为了减少镜像构建大小和优化jvm内存使用升级过一次jdk,由adoptopenjdk/openjdk9升级为openjdk11-openj9, 导致上述错误,最终将jdk又退回到了9,并且删除了openj9虚拟机一些独有的jvm参数。再次启动恢复正常。

类似问题:openj9-issues

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐