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

如何在SonarQube 9.9.4中禁用FindBugs扫描或修复Java 21引发的Unsupported Class File Major Version错误

如何在SonarQube 9.9.4中禁用FindBugs扫描或修复Java 21引发的Unsupported Class File Major Version错误

遇到这个问题很正常,因为SonarQube 9.9.4内置的FindBugs(包括FindSecBugs)版本并未适配Java 21的class文件主版本号65。既然你无法升级SonarQube,这里有两个可行的解决方向:

一、直接禁用FindBugs扫描

如果你可以接受暂时放弃FindBugs提供的代码缺陷检测,最快的解决方式就是禁用这个传感器,有三种实现途径:

1. 在Azure Pipeline的Maven任务中添加参数

修改你现有Maven任务的options字段,加入-Dsonar.findbugs.enabled=false参数,修改后的配置如下:

- task: Maven@4
  condition: succeeded()
  displayName: Build
  inputs:
    mavenPomFile: pom.xml
    mavenOptions: ${{ parameters.mavenOptions }}
    javaHomeOption: JDKVersion
    jdkVersionOption: ${{ parameters.jdkVersionOption }}
    jdkArchitectureOption: x64
    options: '-U --no-transfer-progress -Dsonar.java.binaries=$(System.DefaultWorkingDirectory)/**/classes -Dsonar.findbugs.enabled=false'
    goals: clean install
    sonarQubeRunAnalysis: true

这样在构建时会直接跳过FindBugs的扫描环节,避免版本兼容错误。

2. 在项目pom.xml中配置Sonar属性

在项目的pom.xml的<properties>节点中添加禁用FindBugs的全局配置:

<properties>
  <!-- 其他属性 -->
  <sonar.findbugs.enabled>false</sonar.findbugs.enabled>
</properties>

这种方式会作用于所有使用该pom的构建场景,不需要每次修改Pipeline配置。

3. 在SonarQube项目设置中禁用

进入你的SonarQube项目后台,依次点击Administration > General Settings > FindBugs,找到"Enable FindBugs"的开关并关闭。这是项目级的全局设置,适合需要长期禁用的场景。

二、升级FindBugs/FindSecBugs插件版本(推荐)

如果你不想失去FindBugs的检测能力,可以尝试升级SonarQube中的FindBugs插件到支持Java 21的兼容版本(需确保插件适配SonarQube 9.9.4):

  1. 登录你的SonarQube后台,进入Administration > Marketplace,搜索"FindBugs"插件,查看当前安装的版本。
  2. 查找支持Java 21且兼容SonarQube 9.x的最新插件版本(比如FindBugs插件v4.8.0及以上版本通常已支持Java 21)。
  3. 下载对应的插件jar包,上传到SonarQube服务器的extensions/plugins目录,替换旧版本的插件文件。
  4. 重启SonarQube服务,之后重新触发Azure Pipeline构建,FindBugs应该就能正常扫描Java 21编译的class文件了。

注意:在升级插件前,一定要确认插件版本与SonarQube 9.9.4的兼容性,避免出现其他适配问题。

备注:内容来源于stack exchange,提问作者Splioo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.13 19:08:04