![](/img/trans.png)
[英]Jenkins pipeline for react could not find 'java' executable in JAVA_HOME or PATH
[英]Sonarscanner on Jenkins: Could not find 'java' executable in JAVA_HOME or PATH
我正在嘗試在 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.
更新:
關於 Dimitry 的評論 - 我正在使用工具:
在管道的頂部:
tools{
jdk 'openjdk-11'
}
關於 Marcinek 的回答 - 好地方。 我已經意識到將 JAVA_HOME 設置在管道的頂部實際上並沒有做任何事情。 無論我將其設置為什么,它都保持為:
/var/lib/jenkins/tools/hudson.model.JDK/openjdk-11
變量$JAVA_HOME
應該指向 java 的主目錄,其中 bin 文件夾可以通過附加bin
找到
您的$JAVA_HOME
變量指向
Java Home: /var/lib/jenkins/tools/hudson.model.JDK/openjdk-11
要找到 java 可執行文件,您必須 append jdk-11/bin
因此 JAVA_HOME 的正確路徑應該是:
/var/lib/jenkins/tools/hudson.model.JDK/openjdk-11/jdk-11
PATH 應該指向:
/var/lib/jenkins/tools/hudson.model.JDK/openjdk-11/jdk-11/bin
您可以使用“工具”部分在管道中使用 java。
pipeline {
agent any
tools {
jdk 'your-jdk-tool-name'
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.