小门板儿

Menu

jenkins集成sonarqube解决jdk版本不一致问题

Sonar新版本支持了go语法的检查规则,但新版本的sonnar必须在jdk11+环境上才能运行,这样对会对jdk8.0的java项目造成影响。

一、当前部署环境

1、jenkins部署在宿主机上,版本为jenkins-2.346-1.1.noarch.rpm,改版本支持jdk8.0环境,并且支持SonarScanner插件下载(该插件对Jenkins版本有要求,版本太低插件安装不上)

2、sonarqube使用容器安装,安装版本为sonarqube:9.8-community,需要jdk11+环境,sonar容器中默认的jdk版本为17

二、遇到的问题

1、sonar无法运行问题

使用默认的jdk版本运行任务时,提示 org/sonar/batch/bootstrapper/EnvironmentInformation has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0,错误信息显示,sonar需要高版本的jdk,由此可推测,虽然sonar容器中有对应的jdk版本,但是运行时,还是使用了系统中设置的jdk版本

2、maven无法运行的问题

由上面第一个问题可推测,在运行sonnar时,需要指定响应的jdk版本,故在宿主机上下载jdk11,并在Global Tool Configuration添加jdk11的路径,并且在任务配置中为sonar指定jdk11的版本

指定版本后运行效果,提示Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:testCompile (default-testCompile) on project cloud-game-server-api: Compilation failure

通过该报错可知,maven执行命令也使用了jdk11的版本,由于项目使用的是jdk8,导致无法为项目打包。但是这里很奇怪的是,我们并没有为maven指定jdk11的版本,maven运行时,应该使用的是系统配置的jdk。所以这里怀疑在Global Tool Configuration添加jdk11的路径的时候,这里地方就更改了系统的java——path路径

三、解决问题

由上面的报错来看,我们可以尝试在Global Tool Configuration中分别添加jdk8和jdk11的路径,并且将jdk8的路径添加在上面,这样系统的java_path应该会指定为jkd8,并且在任务配置中为sonar指定jdk11的版本,sonar即可使用jdk11版本运行,现在执行下任务,查看是否正常运行

由日志可见,该方法完美解决问题~~

写在最后,特别感谢唐sir的大力支持,一针见血找出问题,解决心头大患,在此祝唐sir行大运,发大财~~~

— 于 共写了1268个字
— 标签:

评论已关闭。