java.lang.VerifyError: JVMCFRE090 new bytecode cannot create arrays; class=jdk/internal/reflect
·
最近一次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
更多推荐
所有评论(0)