现象
最新做一个java开发项目,用到了java的RSA证书做签名验证,开发环境一切正常,jenkins打包正常,部署到正式环境后执行到加载密钥文件时报如下错误
线上报错日志
2022-08-22 15:41:03.151 ERROR 98046 --- [http-nio-8080-exec-10] o.a.c.c.C.[.[.[.[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [/finance] threw exception [Handler processing failed; nested exception is java.lang.IllegalAccessError: tried to access method sun.security.rsa.RSAPublicKeyImpl.<init>([B)V from class com.xxx.util.AsymmetricCryptography] with root cause
java.lang.IllegalAccessError: tried to access method sun.security.rsa.RSAPublicKeyImpl.<init>([B)V from class com.xxx.util.AsymmetricCryptography
直接说原因及解决方式
问题原因
JDK1.8.0 各小版本之间有差异,开发环境和线上环境RSA密钥加载部分正好受影响。
解决方式
统一JDK版本为: jdk1.8.0_161
oracle jdk下载地址
注意英文版本页面的各小版本都可以下载,中文版本页面只有早期的一部分小版本可以下载。