使用sonarScanner扫描项目的时候报错 jdk使用的1.8版本
Caused by: net.sf.cglib.core.CodeGenerationException: java.lang.reflect.InaccessibleObjectException-->Unable to make protected final java.lang.Class java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int,java.security.ProtectionDomain) throws java.lang.ClassFormatError accessible: module java.base does not "opens java.lang" to unnamed module @36c7cbe1
sonarScanner扫描项目报错
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
4条回答 默认 最新
关注 引自免费微信小程序:皆我百晓生
看起来你在使用SonarScanner进行代码分析时遇到了一个与Java版本兼容性相关的问题。这个错误信息表明在尝试使用CGLIB库(一种用于动态代理的工具)对类进行操作时,由于Java 9及更高版本的安全增强特性,导致无法访问
ClassLoader#defineClass
方法。要解决这个问题,你需要确保SonarScanner、 SonarQube服务器以及你的项目都使用相同的JDK版本,并且是Java 8或更低版本。此外,还需要更新CGLIB库到支持Java 9+的版本,因为旧版CGLIB可能不兼容新版本的Java。
以下是针对这个问题的步骤:
-
检查并确保所有环境的JDK版本:
- 确保你的本地开发环境、SonarScanner运行环境以及SonarQube服务器都是Java 8。
- 可以通过运行
java -version
来查看当前JDK版本。
-
更新SonarScanner:
-
更新SonarQube:
-
更新CGLIB依赖:
- 在你的项目中,确认是否有使用CGLIB库。如果是Maven项目,打开pom.xml文件;如果是Gradle项目,打开build.gradle文件。
- 更新CGLIB库至支持Java 9+的版本。例如,对于Maven项目,可以将CGLIB依赖更新为以下内容:
<dependency> <groupId>cglib</groupId> <artifactId>cglib</artifactId> <version>3.3.0</version> </dependency>
- 对于Gradle项目,更新为:
implementation 'cglib:cglib:3.3.0'
-
清理构建缓存:
- 清理Maven或Gradle的本地仓库缓存,以便加载新的依赖项。
- 对于Maven,删除
.m2/repository
目录下的相应CGLIB包。 - 对于Gradle,删除
~/.gradle/caches/modules-2/files-2.1
目录下的相应CGLIB模块。
-
重新执行SonarScanner:
- 完成上述更改后,再次运行SonarScanner扫描你的项目,应该能成功完成而不会遇到之前提到的错误。
如果你仍然遇到问题,可能需要检查其他依赖库是否也可能存在类似的问题,确保它们都已更新到支持Java 9+的版本。
解决 无用评论 打赏 举报 编辑记录-
悬赏问题
- ¥15 35114 SVAC视频验签的问题
- ¥15 impedancepy
- ¥15 在虚拟机环境下完成以下,要求截图!
- ¥15 求往届大挑得奖作品(ppt…)
- ¥15 如何在vue.config.js中读取到public文件夹下window.APP_CONFIG.API_BASE_URL的值
- ¥50 浦育平台scratch图形化编程
- ¥20 求这个的原理图 只要原理图
- ¥15 vue2项目中,如何配置环境,可以在打完包之后修改请求的服务器地址
- ¥20 微信的店铺小程序如何修改背景图
- ¥15 UE5.1局部变量对蓝图不可见