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

SonarQube扫描报UnsupportedClassVersionError错误的解决咨询

解决SonarScanner与SonarQube版本不兼容导致的UnsupportedClassVersionError错误

核心原因

SonarQube 10.4.1 要求运行 SonarScanner 的 JDK 版本必须为 17(类版本61.0),你当前实际启动Scanner的JDK版本仍为11,导致无法加载服务器端编译的类。

可行解决方法

1. 彻底确认SonarScanner使用的JDK版本

先执行以下命令验证当前Scanner调用的JDK:

# 检查系统全局Java版本
java -version
# 直接检查SonarScanner启动时使用的Java(Windows替换为sonar-scanner.bat -v)
sonar-scanner -v

如果输出的Java版本不是17,说明PATH/JAVA_HOME配置未真正生效:

  • Windows:打开新的命令提示符(不要复用旧窗口),执行echo %JAVA_HOME%和java -version确认配置。
  • Linux/macOS:执行export JAVA_HOME=/path/to/jdk17和export PATH=$JAVA_HOME/bin:$PATH,再重新验证版本。

2. 直接指定SonarScanner的JDK路径

如果全局环境变量修改无效,直接修改SonarScanner的启动脚本:

  • Linux/macOS:编辑sonar-scanner/bin/sonar-scanner,在脚本开头添加:
    JAVA_HOME=/path/to/your/jdk17
    export JAVA_HOME
    
  • Windows:编辑sonar-scanner/bin/sonar-scanner.bat,在开头添加:
    set JAVA_HOME=C:\path\to\your\jdk17
    

3. 区分扫描运行JDK与项目编译JDK

-Dsonar.java.jdkHome是用来指定项目代码编译用的JDK(比如你的项目基于JDK8),而非运行SonarScanner的JDK。正确的命令格式示例:

sonar-scanner \
  -Dsonar.projectKey=your-project-key \
  -Dsonar.java.jdkHome=/path/to/jdk8 \
  -Dsonar.host.url=http://your-sonarqube-server \
  -Dsonar.login=your-token

这里运行sonar-scanner的JDK必须是17,sonar.java.jdkHome指向项目编译用的JDK。

4. 确认SonarScanner版本兼容性

SonarScanner 4.6.1兼容SonarQube 10.4.1,若以上步骤无效,可尝试升级SonarScanner到最新兼容版本(如5.x系列),确保与服务器版本匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 15:52:16