java - Jenkins 上的 Sonarscanner : Could not find 'java' executable in JAVA_HOME or PATH

标签 java jenkins jenkins-pipeline java-11 sonarqube-scan

我正在尝试在 Jenkins(在 Linux 上运行)上运行 .net core sonarscanner 工具,例如:

dotnet sonarscanner 开始......

但是报错

在 JAVA_HOME 或 PATH 中找不到“java”可执行文件。

我不确定这是为什么,因为我在我的管道顶部明确设置了路径:

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 主页:/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

然而,声纳扫描仪仍然失败并出现错误:

在 JAVA_HOME 或 PATH 中找不到“java”可执行文件。

更新:

关于 Dimitry 的评论 - 我正在使用这些工具:

tools

在管道的顶部:

  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 可执行文件,您必须附加 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 - Jenkins 上的 Sonarscanner : Could not find 'java' executable in JAVA_HOME or PATH,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65058808/

相关文章:

java - 将两种方法合二为一

docker - Jenkins:从与代理(另一个 Docker 容器)一起运行的阶段连接到 Docker 容器

api - 列出过去一年的 Jenkins 作业构建详细信息以及触发构建的用户

jenkins - 如何避免 Jenkins 在 Jenkinsfile 中触发 git 命令

jenkins - 如何在Jenkins中删除无法停止的管道作业?

jenkins - 对于 Jenkins Pipeline 插件,如何命名并行步骤以显示

java - Selenium Driver点击android键盘上的绿色勾号进行自动化测试的命令是什么?

java - JACKSON 如何不包含字段的包装器?

java - 领域模型金融交易应用

selenium - Jenkins 在后台模式下启动 chromedriver(如 headless 模式)