【问题标题】:Wrong Major Version number when running Sonar Scanner with Java 11使用 Java 11 运行 Sonar Scanner 时主版本号错误
【发布时间】:2019-03-16 17:07:19
【问题描述】:

我目前正在将一个项目从 java 8 迁移到 java 11,并且一直在使用带有 gradle 的 Sonar 扫描仪将代码发送到 SonaQube。迁移到 Open JDK 11 后,我在运行 gradle sonarqube 任务时收到以下错误:

java.lang.IllegalArgumentException: Unsupported class file major version 55

我在网上看到扫描仪应该使用 jdk 8 运行,即使分析可以在某个版本的 java 文件上运行,但无法弄清楚。

理想情况下,我可以使用 Java 11 JDK 运行 gradle sonarqube。我发现另一个问题似乎有success with Java 11 using Maven,但他们的错误是不同的,我认为他们的解决方案不适用于我。

这个问题是否可以解决,还是需要等待 Sonar Scanner 支持 JDK 11?

【问题讨论】:

  • 我怀疑 sonarqube 或 gradle 是否完全支持 Java11。你能分享他们在问题中使用的版本吗?
  • 我对 sonar-scanner (org.sonarqube) 2.6.2 和 SonarQube 7.1 有同样的问题,SonarJava 插件更新到 5.6。看起来 Gradle 插件仍未更新以兼容 Java 11。
  • @Kutzi 我没有找到解决方案,但我找到了解决方法。我使用 Java 11 进行所有开发工作,但专门切换到 Java 8 以使用 gradle 运行 sonarqube 任务。我将任务称为:gradle sonarqube -Psonar8 -Dorg.gradle.java.home=$JAVA_HOME_8。 JAVA_HOME_8 指向我的 Java 8 JDK。当 gradle 获取 -Psonar 时,它会更改目标和源代码的兼容性(例如 targetCompatibility = project.hasProperty('sonar8') ? '8' : '10')以及排除所有尝试编译或运行代码的任务(例如 gradle.startParameter.excludedTaskNames += "compileJava"
  • @CalebHulbert:我也在寻找同样的观点。我们的开发是在JDK11中完成的。但我需要使用 gradle sonarqube 来运行声纳分析。因为 gradle 声纳扫描仪尚未支持 JDK11。我是 gradle 新手,你能详细解释一下你周围提到的工作吗?提前致谢。
  • @Caleb Hulbert:使用的声纳扫描仪 gradle 插件版本和使用的声纳 qube 服务器版本是什么?

标签: gradle sonarqube-scan sonar-runner java-11 sonarscanner


【解决方案1】:

如果像我这样的人会有所帮助。
源代码 Java 8(55),带有 jenkins 和 sonarqube 扫描仪。
我的错误是

信息:SonarScanner 4.6.2.2472
信息:Java 11.0.11 AdoptOpenJDK(64 位)
.....
java.lang.IllegalArgumentException:不支持的类文件主要版本 55

查看此链接:Why does sonar-scanner force the usage of the embedded JRE?
并更改您的 sonnar-scanner.bat 或 sonnar-scanner.sh
use_embedded_jre=false

【讨论】:

    猜你喜欢
    • 2017-09-18
    • 2018-03-30
    • 2018-09-02
    • 2018-10-13
    • 2022-11-23
    • 2016-06-15
    • 1970-01-01
    • 2014-07-11
    • 1970-01-01
    相关资源
    最近更新 更多