You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SonarQube扫描报错求助:JDK17下ClassLoader权限问题

Sonar Scanner运行失败:JDK17下ClassLoader.defineClass访问受限问题解决办法

解决步骤

  • 匹配Scanner与SonarQube版本:确保使用的Sonar Scanner版本和SonarQube服务器版本完全一致。最新版SonarQube(如10.x及以上)配套的Scanner已适配JDK17,旧版本Scanner的依赖库未兼容JPMS模块系统。
  • 添加JVM参数临时绕过限制:若暂时无法升级,运行Scanner时追加以下参数:
    sonar-scanner -Dsonar.scanner.java.additionalOpts="--add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.lang.reflect=ALL-UNNAMED"
    
    也可在sonar-scanner.properties中持久化配置:
    sonar.scanner.java.additionalOpts=--add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.lang.reflect=ALL-UNNAMED
    
  • 升级SonarJavaScript插件:登录SonarQube后台,检查并升级JavaScript插件至最新版。旧版插件依赖的SSLR库使用未适配JDK17的cglib,新版本已替换为兼容的字节码生成方案。

问题根源

报错核心为module java.base does not "opens java.lang" to unnamed module @4f668f29:
JDK9引入的模块系统(JPMS)严格限制核心模块内部API的访问权限,java.lang.ClassLoader.defineClass属于受保护的内部方法,默认不允许未命名模块(如旧版cglib)通过反射调用。旧版Sonar Scanner或JavaScript插件依赖的cglib库未适配JPMS,触发权限校验失败,最终导致JavaScriptSensor加载异常。

内容的提问来源于stack exchange,提问作者arun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 17:27:00