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

如何配置sonar-maven-plugin分析Java21项目并解决FindBugs报错?

解决Java 21项目中sonar-maven-plugin分析的FindBugs兼容性问题

问题根源

你遇到的Unsupported class file major version 65错误,是因为旧版本的sonar-maven-plugin(3.10.0.2594)依赖的FindBugs组件不支持Java 21的类文件版本(major version 65对应Java 21)。同时Java 21的API变更(比如MethodHandles$Lookup的内部实现调整)也导致FindBugs无法正常解析类文件。

解决方案

1. 升级sonar-maven-plugin到支持Java 21的版本

旧版本3.10.0.2594发布于2022年,未适配Java 21。需要升级到4.0.0.2929及以上版本,这些版本的插件已兼容Java 21的类格式和API。

2. 替换FindBugs为SpotBugs

FindBugs已停止维护,最高仅支持Java 17。SpotBugs是FindBugs的官方继任项目,持续更新并支持Java 21。需要在Sonar分析中禁用FindBugs,启用SpotBugs。

3. 修改后的POM配置示例

<project...>
    <properties>
        <java.version>21</java.version>
        <!-- 禁用FindBugs,启用SpotBugs -->
        <sonar.findbugs.enabled>false</sonar.findbugs.enabled>
        <sonar.spotbugs.enabled>true</sonar.spotbugs.enabled>
    </properties>

    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.sonarsource.scanner.maven</groupId>
                    <artifactId>sonar-maven-plugin</artifactId>
                    <!-- 升级到兼容Java21的版本 -->
                    <version>4.1.0.3168</version>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>
</project>

额外注意事项

  • 确保构建服务器上的SonarQube服务器版本不低于9.9 LTS,旧版本SonarQube无法处理Java 21的代码分析请求。
  • 执行分析命令时,无需额外修改Maven版本(你当前用的3.9.4已支持Java 21),直接运行:
    mvn sonar:sonar
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 12:07:49