I'm trying to run the .net core sonarscanner tool on Jenkins (running on Linux) like:
dotnet sonarscanner begin ...
But it's giving the error
Could not find 'java' executable in JAVA_HOME or PATH.
I'm not sure why this is as I am explicitly setting the path at the top of my pipeline:
environment {
JAVA_HOME="${tool 'openjdk-11'}/jdk-11"
PATH="${tool 'openjdk-11'}/jdk-11/bin:$HOME/.dotnet/tools/:$PATH"
}
And from running the following commands I can see this looks correct:
sh "echo \"Java Home:\" $JAVA_HOME"
Produces:
Java Home: /var/lib/jenkins/tools/hudson.model.JDK/openjdk-11
And listing the directory:
sh "ls /var/lib/jenkins/tools/hudson.model.JDK/openjdk-11/jdk-11/bin"
produces:
+ ls /var/lib/jenkins/tools/hudson.model.JDK/openjdk-11/jdk-11/bin
jaotc
jar
jarsigner
java
javac
javadoc
javap
jcmd
jconsole
jdb
jdeprscan
jdeps
jhsdb
jimage
jinfo
jjs
jlink
jmap
jmod
jps
jrunscript
jshell
jstack
jstat
jstatd
keytool
pack200
rmic
rmid
rmiregistry
serialver
unpack200
Yet still, sonar scanner fails with the error:
Could not find 'java' executable in JAVA_HOME or PATH.
UPDATE:
Regarding Dimitry's comment - I am using the tools:
With this at the top of the pipeline:
tools{
jdk 'openjdk-11'
}
With regards to Marcinek's answer - good spot. I've realised that setting the JAVA_HOME at the top of the pipeline is not actually doing anything. Whatever I set it to, it remains as:
/var/lib/jenkins/tools/hudson.model.JDK/openjdk-11