我试图在Jenkins (运行在Linux上)上运行.net核心声纳扫描仪工具,例如:
dotnet sonarscanner begin ...
但它让我们犯了错误
Could not find 'java' executable in JAVA_HOME or PATH.
我不知道为什么会这样,因为我在管道顶部显式地设置路径:
environment {
JAVA_HOME="${tool 'openjdk-11'}/jdk-11"
PATH="${tool 'openjdk-11'}/jdk-11/bin:$HOME/.dotnet/tools/:$PATH"
} 通过运行以下命令,我可以看到这看起来是正确的:
sh "echo \"Java Home:\" $JAVA_HOME"
生产:
Java Home: /var/lib/jenkins/tools/hudson.model.JDK/openjdk-11
并列出目录:
sh "ls /var/lib/jenkins/tools/hudson.model.JDK/openjdk-11/jdk-11/bin"
生产:
+ 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然而,声纳扫描仪仍因错误而失败:
Could not find 'java' executable in JAVA_HOME or PATH.
更新:
关于迪米特里的评论-我正在使用这些工具:

在输油管道的顶端:
tools{
jdk 'openjdk-11'
}关于Marcinek的回答-好地方。我已经意识到,将JAVA_HOME设置在管道的顶端实际上并不能做任何事情。无论我把它设定为什么,它仍然是:
/var/lib/jenkins/tools/hudson.model.JDK/openjdk-11
发布于 2020-11-29 10:08:14
变量$JAVA_HOME应该指向java的主目录,在这里可以通过附加bin找到bin文件夹。
您的$JAVA_HOME变量指向
Java Home: /var/lib/jenkins/tools/hudson.model.JDK/openjdk-11要找到java可执行文件,必须追加jdk-11/bin。
因此,正确的JAVA_HOME路径应该是:
/var/lib/jenkins/tools/hudson.model.JDK/openjdk-11/jdk-11这条道路应该指向:
/var/lib/jenkins/tools/hudson.model.JDK/openjdk-11/jdk-11/bin发布于 2020-11-29 10:37:12
您可以在管道中使用'tools‘部分来使用java。
pipeline {
agent any
tools {
jdk 'your-jdk-tool-name'
}https://stackoverflow.com/questions/65058808
复制相似问题