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

如何解决Jenkins中Sonar Scanner插件报错且无需变更Java版本的问题

问题根因

报错中class file version 55.0对应Java 11编译的类文件,52.0对应你当前使用的Java 8运行环境,核心冲突为当前调用的sonar-maven-plugin:3.9.0及配套依赖最低要求Java 11运行,无需修改全局Java版本的前提下,可通过以下方案解决问题:

解决方案

方案1:降级sonar-maven-plugin到兼容Java8的版本

兼容Java8的最高sonar-maven-plugin版本为3.8.0.2131,可选择以下任意一种方式指定版本:

  • 直接在项目pom.xml中固定sonar-maven-plugin的版本为3.8.0.2131
  • 在Jenkins执行扫描命令时手动指定版本:
mvn org.sonarsource.scanner.maven:sonar-maven-plugin:3.8.0.2131:sonar <其余扫描参数>

注意:该方案要求你的SonarQube服务端版本≤9.7,更高版本的SonarQube服务端不再兼容3.8.x版本的扫描插件

方案2:Sonar扫描步骤单独指定JDK11运行

不需要修改项目编译使用的Java版本,仅给Sonar扫描步骤单独配置JDK11即可:

  • 先在Jenkins全局工具配置中新增JDK11安装项,命名为例如JDK11
  • 对应任务配置调整:
    • Freestyle任务:在Sonar扫描对应的Invoke top-level Maven targets构建步骤中,选择JDK为提前配置的JDK11,其余编译步骤仍使用原有JDK8即可
    • Pipeline任务参考配置:
pipeline {
  agent any
  tools {
    jdk 'JDK8' // 全局默认使用JDK8编译项目
  }
  stages {
    stage('项目编译') {
      steps {
        sh 'mvn clean install'
      }
    }
    stage('Sonar代码扫描') {
      tools {
        jdk 'JDK11' // 该步骤单独使用JDK11运行
      }
      steps {
        sh 'mvn sonar:sonar <其余扫描参数>'
      }
    }
  }
}

该方案不影响项目本身的编译Java版本,也可适配高版本SonarQube服务端,推荐长期使用。

方案3:降级Jenkins Sonar插件版本

如果你的SonarQube服务端版本≤9.7,可直接把Jenkins安装的Sonar插件从2.13.1降级到2.12版本,该版本默认拉取的sonar-maven-plugin为兼容Java8的版本,无需额外调整其他配置。

内容的提问来源于stack exchange,提问作者system-dev

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 14:45:03