开启redis分布式锁 docker方式启动报错

Blade 未结 3 2408
xiaowuyan
xiaowuyan 剑童 2020-11-12 20:18

一、该问题的重现步骤是什么?

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 均存在此问题

四、请提供详细的错误堆栈信息,这很重要。

2020-11-12 20-13-37屏幕截图.png


2020-11-12 20-14-16屏幕截图.png

五、若有更多详细信息,请在下面提供。

3条回答
  • 2020-12-11 16:51

    问题已解决

    如果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

    即可解决。


    1 讨论(1)
  • 2020-11-13 09:46

    要复现此问题,需要更新openj9到 jdk8u272-b10_openj9-0.23.0 , jar包启动即可复现

    0 讨论(0)
  • 2022-09-15 15:20

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

    0 讨论(0)
提交回复