执行 org.sonarsource.scanner.maven:sonar-maven-plugin:3.9.0.2155:sonar 时遇到 API 不兼容
Posted
技术标签:
【中文标题】执行 org.sonarsource.scanner.maven:sonar-maven-plugin:3.9.0.2155:sonar 时遇到 API 不兼容【英文标题】:An API incompatibility was encountered while executing org.sonarsource.scanner.maven:sonar-maven-plugin:3.9.0.2155:sonar 【发布时间】:2021-10-27 02:11:47 【问题描述】:我们已从 7.6>7.9>8.9>9.0 升级。
现在我们面临同样的问题,
plugin:3.9.0.2155:sonar failed: 执行 org.sonarsource.scanner.maven:sonar-maven-plugin:3.9.0.2155:sonar: java.lang.UnsupportedClassVersionError: org/sonar/batch 时遇到 API 不兼容/bootstrapper/EnvironmentInformation 已由更新版本的 Java Runtime(类文件版本 55.0)编译,此版本的 Java Runtime 仅识别最高 52.0 的类文件版本
我已经浏览了文档https://docs.sonarqube.org/latest/analysis/languages/java/#header-3,但是我们如何才能使用 sonar.java.jdkHome 以及在哪里?这个jdk应该在jenkins slave还是sonarqube服务器上? 我们不使用 sonarqube 属性文件,我们有 jenkins 构建,我们有 maven 配置,只有 sonar:sonar 用于扫描。我们如何管理这种情况。
提前致谢。
【问题讨论】:
看起来您正在尝试在 JDK8 而不是 JDK11 上运行。据我所知,SonarQube 服务器必须在 JDK11 上运行... 是的,它在 jdk11 上启动并运行,但是该项目使用 jdk 8,并且在扫描时出现上述异常,现在问题是 - community.sonarsource.com/t/… 当 SQ 从 min JDK 6 -> 8 转到时,我们遇到了类似的问题。将我们的作业更改为使用作业默认 JDK 6 构建,然后添加 envinject ENV stepJAVA_HOME=/path/to/jdk8,然后调用声纳扫描仪步骤。看看这是否适合您,但 8 -> 11。此外,Jenkins masteree 和代理运行 8,SQ 运行 11。您的作业可以使用 Global Tools Java 中配置的任何内容。 请澄清您的具体问题或提供其他详细信息以准确突出您的需求。正如目前所写的那样,很难准确地说出你在问什么。 【参考方案1】:由于 SonarQube 9.0 分析必须使用 JDK11 完成。这是 9.0 中的重大更改之一,请参阅官方 documentation。
【讨论】:
以上是关于执行 org.sonarsource.scanner.maven:sonar-maven-plugin:3.9.0.2155:sonar 时遇到 API 不兼容的主要内容,如果未能解决你的问题,请参考以下文章