执行 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 不兼容的主要内容,如果未能解决你的问题,请参考以下文章

jvm的解释执行与编译执行

Jmeter--多个线程组顺序执行和并行执行

小记---------手动执行脚本正常执行,使用crontab定时执行时 不执行

同步执行与异步执行

js函数执行顺序,怎麼让一个函数执行完再执行下面的程序

java中定时执行任务,为啥方法没有执行完就不执行了?