橘子汽水 2024-04-18 18:29 采纳率: 0%
浏览 57

sonarScanner扫描项目报错

使用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

  • 写回答

4条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-04-18 18:29
    关注

    引自免费微信小程序:皆我百晓生

    看起来你在使用SonarScanner进行代码分析时遇到了一个与Java版本兼容性相关的问题。这个错误信息表明在尝试使用CGLIB库(一种用于动态代理的工具)对类进行操作时,由于Java 9及更高版本的安全增强特性,导致无法访问ClassLoader#defineClass方法。

    要解决这个问题,你需要确保SonarScanner、 SonarQube服务器以及你的项目都使用相同的JDK版本,并且是Java 8或更低版本。此外,还需要更新CGLIB库到支持Java 9+的版本,因为旧版CGLIB可能不兼容新版本的Java。

    以下是针对这个问题的步骤:

    1. 检查并确保所有环境的JDK版本

      • 确保你的本地开发环境、SonarScanner运行环境以及SonarQube服务器都是Java 8。
      • 可以通过运行 java -version 来查看当前JDK版本。
    2. 更新SonarScanner

      • 如果你的SonarScanner不是最新版本,升级到最新稳定版。可以从官方下载页面: 下载安装。
    3. 更新SonarQube

      • 检查SonarQube服务器上的版本,确保它也支持Java 8。如果使用的是较老的版本,考虑升级到支持Java 8的最新稳定版。可以在官方文档中找到对应版本的兼容性信息:
    4. 更新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'
        
    5. 清理构建缓存

      • 清理Maven或Gradle的本地仓库缓存,以便加载新的依赖项。
      • 对于Maven,删除.m2/repository目录下的相应CGLIB包。
      • 对于Gradle,删除~/.gradle/caches/modules-2/files-2.1目录下的相应CGLIB模块。
    6. 重新执行SonarScanner

      • 完成上述更改后,再次运行SonarScanner扫描你的项目,应该能成功完成而不会遇到之前提到的错误。

    如果你仍然遇到问题,可能需要检查其他依赖库是否也可能存在类似的问题,确保它们都已更新到支持Java 9+的版本。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 4月18日