簡體   English   中英

Jenkins 上的 Sonarscanner:在 JAVA_HOME 或 PATH 中找不到“java”可執行文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM