Java 试图在Jenkins上使用SonarQube来分析项目,但是Jenkins使用JDK1.7,我得到了一个不受支持的major.minor版本错误

Java 试图在Jenkins上使用SonarQube来分析项目,但是Jenkins使用JDK1.7,我得到了一个不受支持的major.minor版本错误,java,git,jenkins,sonarqube,openjdk,Java,Git,Jenkins,Sonarqube,Openjdk,我试图使用SonarQube分析一个git项目,并通过Jenkins运行它,但是当我尝试构建时,控制台输出给了我一个错误 java.lang.UnsupportedClassVersionError: org/sonar/batch/bootstrapper/ EnvironmentInformation : Unsupported major.minor version 52.0 截图-> 我了解到这意味着我在编译时使用的JDK比在运行时使用的JDK要高。当我ssh到托管Jenkins和So

我试图使用SonarQube分析一个git项目,并通过Jenkins运行它,但是当我尝试构建时,控制台输出给了我一个错误

java.lang.UnsupportedClassVersionError: org/sonar/batch/bootstrapper/
EnvironmentInformation : Unsupported major.minor version 52.0
截图->

我了解到这意味着我在编译时使用的JDK比在运行时使用的JDK要高。当我ssh到托管Jenkins和SonarQube服务器的机器上并运行

java -version
它输出:

openjdk version "1.8.0_91"
OpenJDK Runtime Environment (build 1.8.0_91-b14)
OpenJDK 64-Bit Server VM (build 25.91-b14, mixed mode)
这就是它应该是什么——我相信SonarQube 5.6需要Java 1.8

截图->

但是,我在开始时编辑Jenkins构建以执行shell命令,并让它运行

java -version
并输出java版本“1.7.079”

屏幕截图->i.imgur.com/ghGWpZx.png(靠近底部)

有人能告诉我我做错了什么吗?如何强制Jenkins使用JDK1.8?在我的设置中,一切似乎都配置正确

屏幕截图->i.imgur.com/3IXXEzg.png

[很抱歉,我必须删除一些超链接,因为我没有足够的SO代表发布超过2个链接]


感谢您的帮助

在启动Jenkins时,请确保Java版本8在您的路径中

该服务器可能安装了Java7和Java8


启动Jenkins时,确保Java版本8在您的路径中

该服务器可能安装了Java7和Java8


确保在同一JDK版本上运行Jenkins和Sonar。在将Jenkins升级到Java 1.8之前,请确保您的代码库已准备好进行Java 8迁移,如果没有,请将Sonar切换到Java 7。

确保在同一JDK版本上运行Jenkins和Sonar。在将Jenkins升级到Java 1.8之前,如果不将Sonar切换到Java 7,请确保您的代码库已准备好进行Java 8迁移。

是的,SonarQube 5.6需要Java 8,但这并不强迫您更改Jenkins运行的Java版本,也不强迫您更改编译代码时使用的Java

如果您可以将所有内容切换到Java8并转储Java7,那么这是最简单的解决方案。否则,Jenkins可以并行管理多个JDK(Jenkins设置下的
JDK安装
),然后进行SonarQube扫描:

  • 如果使用SonarQube扫描仪进行分析,则可以选择扫描仪应使用的JDK(在设置中,在“执行SonarQube扫描仪”下,先前调用“独立声纳分析”)
  • 如果您使用SonarQube Scanner for Maven进行分析(这里似乎是这样),那么在两个Maven步骤之间使用不同的JDK并不简单。要么设置两个不同的作业(一个用于使用某个JDK构建,另一个用于使用另一个JDK扫描),要么浏览(您可以在其中选择不同的JDK)

是的,QUBE 5.6需要Java 8,但这并不强迫您更改运行Jenkins的Java版本,也不强迫您更改编译代码的Java版本

如果您可以将所有内容切换到Java8并转储Java7,那么这是最简单的解决方案。否则,Jenkins可以并行管理多个JDK(Jenkins设置下的
JDK安装
),然后进行SonarQube扫描:

  • 如果使用SonarQube扫描仪进行分析,则可以选择扫描仪应使用的JDK(在设置中,在“执行SonarQube扫描仪”下,先前调用“独立声纳分析”)
  • 如果您使用SonarQube Scanner for Maven进行分析(这里似乎是这样),那么在两个Maven步骤之间使用不同的JDK并不简单。要么设置两个不同的作业(一个用于使用某个JDK构建,另一个用于使用另一个JDK扫描),要么浏览(您可以在其中选择不同的JDK)