Jenkins 代理上的 java 版本不正确

问题描述 投票:0回答:1

我已经设置了一个基本的 jenkins 代理作为与 jenkins 控制器连接的 docker 容器。我想在代理上设置 Java 不同的 java 版本 (

jdk-21.0.2
),默认情况下有
Temurin-17.0.8.1
。 我设置了一个不同的 java,但是当使用像这样的简单作业脚本检查 Java 时

pipeline { agent { label 'docker-agent1' } tools { jdk 'jdk-21.0.2' } stages { stage('Java test') { steps { sh ''' env | grep -e PATH -e JAVA_HOME which java java -version ''' } } } }
它给了我以下输出。注意 

java -version

 命令的输出。它为我提供了代理上默认设置的 java 版本。

Started by user admin [Pipeline] Start of Pipeline [Pipeline] node Running on docker-agent1 in /home/jenkins/workspace/java-test-agent1 [Pipeline] { [Pipeline] stage [Pipeline] { (Declarative: Tool Install) [Pipeline] tool Unpacking https://download.java.net/java/GA/jdk21.0.2/f2283984656d49d69e91c558476027ac/13/GPL/openjdk-21.0.2_linux-x64_bin.tar.gz to /home/jenkins/tools/hudson.model.JDK/jdk-21.0.2 on docker-agent1 [Pipeline] envVarsForTool [Pipeline] } [Pipeline] // stage [Pipeline] withEnv [Pipeline] { [Pipeline] stage [Pipeline] { (Java test) [Pipeline] tool [Pipeline] envVarsForTool [Pipeline] withEnv [Pipeline] { [Pipeline] sh + env + grep -e PATH -e JAVA_HOME LD_LIBRARY_PATH=/opt/java/openjdk/lib/server:/opt/java/openjdk/lib:/opt/java/openjdk/../lib PATH=/home/jenkins/tools/hudson.model.JDK/jdk-21.0.2/jdk-21.0.2/bin:/home/jenkins/tools/hudson.model.JDK/jdk-21.0.2/jdk-21.0.2/bin:/opt/java/openjdk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin JAVA_HOME=/home/jenkins/tools/hudson.model.JDK/jdk-21.0.2/jdk-21.0.2 + which java /home/jenkins/tools/hudson.model.JDK/jdk-21.0.2/jdk-21.0.2/bin/java + java -version openjdk version "17.0.8.1" 2023-08-24 OpenJDK Runtime Environment Temurin-17.0.8.1+1 (build 17.0.8.1+1) OpenJDK 64-Bit Server VM Temurin-17.0.8.1+1 (build 17.0.8.1+1, mixed mode) [Pipeline] } [Pipeline] // withEnv [Pipeline] } [Pipeline] // stage [Pipeline] } [Pipeline] // withEnv [Pipeline] } [Pipeline] // node [Pipeline] End of Pipeline Finished: SUCCESS
知道为什么找不到 Java 版本吗

jdk-21.0.2


附加信息: 这是我在

jdk-21.0.2

 中设置 
Manage Jenkins -> Tools
的方法

java docker jenkins continuous-integration
1个回答
0
投票
如果 PATH 中有另一个 java 可执行文件在 JDK 21.0.2 中的可执行文件之前被拾取,则会发生这种情况

检查路径变量并更新它或

使用绝对路径,您可以在 Jenkins 管道脚本中指定 java 可执行文件的绝对路径,而不是依赖 PATH 环境变量。例如:

时髦

steps { sh ''' /home/jenkins/tools/hudson.model.JDK/jdk-21.0.2/jdk-21.0.2/bin/java -version ''' }
    
© www.soinside.com 2019 - 2024. All rights reserved.