【发布时间】: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