美文网首页
RSAPublicKeyImpl类踩坑记录

RSAPublicKeyImpl类踩坑记录

作者: 淡淡的小番茄 | 来源:发表于2021-05-21 09:18 被阅读0次

先说结论:jdk1.8.0,小版本间RSAPublicKeyImpl类是有差异的。此类对应的包名为:sun.security.rsa,在rt.jar中。

说说我们项目中的情况:

window下开发使用的jdk版本为jdk1.8.0_151

使用反编译工具打开:jre\lib\rt.jar,找到RSAPublicKeyImpl类,反编译如下:

在jdk1.8.0_271中:

初始化的方式变了,新版本中提供了静态方法入口,进行初始化。构造方法由之前的public修改为了默认(friendly)。

具体的访问域,描述如下:

然后我们开发环境上jdk的版本是jdk1.8.0_271,部署的时候出现如下错误:

Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.security.oauth2.provider.token.store.JwtAccessTokenConverter]: Factory method 'accessTokenConverter' threw exception; nested exception is java.lang.IllegalAccessError: tried to access method sun.security.rsa.RSAPublicKeyImpl.<init>([B)V from class cn.turing.firecontrol.auth.module.oauth.config.OAuthSecurityConfig

at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:189)

at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:588)

... 68 common frames omitted

Caused by: java.lang.IllegalAccessError: tried to access method sun.security.rsa.RSAPublicKeyImpl.<init>([B)V from class cn.turing.firecontrol.auth.module.oauth.config.OAuthSecurityConfig

at cn.turing.firecontrol.auth.module.oauth.config.OAuthSecurityConfig.accessTokenConverter(OAuthSecurityConfig.java:185)

at cn.turing.firecontrol.auth.module.oauth.config.OAuthSecurityConfig$$EnhancerBySpringCGLIB$$f2a33524.CGLIB$accessTokenConverter$5(<generated>)

at cn.turing.firecontrol.auth.module.oauth.config.OAuthSecurityConfig$$EnhancerBySpringCGLIB$$f2a33524$$FastClassBySpringCGLIB$$f1e89a1a.invoke(<generated>)

at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228)

at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:358)

at cn.turing.firecontrol.auth.module.oauth.config.OAuthSecurityConfig$$EnhancerBySpringCGLIB$$f2a33524.accessTokenConverter(<generated>)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:498)

at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:162)

... 69 common frames omitted

针对此问题,如果能从平时的点滴中养成好的习惯也不会遇到此问题,整理出来后,与大家共勉:

1、jdk的版本需要保持一致,在整个软件开发流程中。

2、打破城规,按部就班的排查问题,不能想当然:你是不是也会认为jdk小版本间应该不会有如此大的差异。

相关文章

  • RSAPublicKeyImpl类踩坑记录

    先说结论:jdk1.8.0,小版本间RSAPublicKeyImpl类是有差异的。此类对应的包名为:sun.sec...

  • 2020-10-19随笔 踩坑0传值

    踩坑:当值传入0时,if条件判断时候会自己转换,记录踩坑。

  • Weex入门踩坑记录

    Weex入门踩坑记录

  • Flutter 开发记录

    Flutter 开发踩坑记录(干货总结)

  • 日常bug记录

    想记录日常碰到的bug,坑踩多了,以后应该碰到坑就比较容易处理或者会少踩坑,后面会慢慢记录bug,截图bug以及最...

  • 没事请多踩踩坑!

    人生事不尽意,别人挖坑我踩坑。 请在这里留下你的踩坑记录,让别人少入坑。

  • Windows下GithubPages博客快速搭建

    Windows下开发坑总是比较多的,但是本人没Mac,只好踩一遍坑记录下。本文主要是安装过程&踩坑记录,故不对细节...

  • Retrofit Https踩坑记录

    Retrofit Https踩坑记录 前言 新司机上路,坑多,本文重点是踩坑,不详细讲retrofit用法,本文不...

  • 填坑C++模板类

    大神们常说不要重复造轮子,小编说不要重复踩坑,希望小编踩过得坑大家不要再踩。 模板类的编译和普通类是截然不同的,所...

  • 个人博客标签分类

    【小结】零碎的小结 【踩坑记录】报错等记录,防止再度踩坑 【总结】比较完整的总结 【想法】自己的一些想法和推论 【...

网友评论

      本文标题:RSAPublicKeyImpl类踩坑记录

      本文链接:https://www.haomeiwen.com/subject/osoijltx.html