java - Jenkins 上的 Sonarscanner:在 JAVA_HOME 或 PATH 中找不到“java”可执行文件
问题描述
我正在尝试在 Jenkins(在 Linux 上运行)上运行 .net core sonarscanner 工具,例如:
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。
pipeline {
agent any
tools {
jdk 'your-jdk-tool-name'
}
推荐阅读
- c# - Xamarin Forms Portable Class Library App 在 Android 上工作,但在 iOS 上没有预期
- anylogic - 如果目的地被占用,防止源块生成代理
- javascript - 未捕获的类型错误:无法读取未定义的属性“样式”
- c# - 转向行为:为什么我的徘徊算法没有按预期工作?
- python - python中的双beta-statsmodel中带有虚拟变量的多元线性回归
- clojurescript - lein cljsbuild 失败并出现无法追踪的错误。如何解决 cljsbuild 错误?
- css - Bootstrap DropdownButton 悬停时间过长
- python - 如何在本地运行和测试我的产品?
- c++ - 如何将布尔值设置为 true 或 false 而不是 1 或 0?
- java - rJava jdk不一致