一、该问题的重现步骤是什么?
1. 打包bladex-boot版本为docker镜像,Dockerfile文件为RELEASE压缩包内原始Dockerfile,项目代码未经过任何修改。
2.开启分布式 redis 锁,出现下图(第四点中的图片)中的错误,关闭分布式锁不会出现问题
二、你期待的结果是什么?实际看到的又是什么?
期待的结果:开启分布式 redis锁项目正常运行
实际看到:项目启动报错 主要原因大致是
Caused by: java.lang.VerifyError: JVMCFRE090 new bytecode cannot create arrays; class=sun/reflect/GeneratedSerializationConstructorAccessor55, method=newInstance([Ljava/lang/Object;)Ljava/lang/Object;, pc=0
三、你正在使用的是什么产品,什么版本?在什么操作系统上?
bladex-boot; 2.7.0.RELEASE (2.6.0.RELEASE上发现此问题,测试2.7.0.RELEASE依然存在此问题); window 10、ubuntu 20.04 均存在此问题
四、请提供详细的错误堆栈信息,这很重要。
五、若有更多详细信息,请在下面提供。
问题已解决
如果dockerfile中的使用的是FROM adoptopenjdk/openjdk8-openj9:alpine-slim,对应的jdk版本为jdk8u275-b01_openj9-0.23.0,此版本针对本项目中的redisLockClient的初始化会报错,问题就是版主发的这个问题。
解决方法:
dockerfile打包时指定jdk版本,如下:
FROM adoptopenjdk/openjdk8-openj9:jdk8u265-b01_openj9-0.21.0-alpine-slim
即可解决。
要复现此问题,需要更新openj9到 jdk8u272-b10_openj9-0.23.0 , jar包启动即可复现
主要原因是由于部分class文件或者依赖包的jdk编译的字节码在不同的jvm上无法被正确的识别导致;
扫一扫访问 Blade技术社区 移动端