Jenkins Maven构建报错:指定OpenJDK路径下Java文件未找到
问题原因与解决方案
核心问题是CPU架构不匹配:你在Jenkins工具中配置的OpenJDK 19.0.2,其CPU架构与Jenkins运行的系统架构不一致。
为什么会出现"文件存在但执行提示not found"?
这个错误信息具有误导性——ls能列出文件仅说明路径正确,但系统执行二进制文件时会检查架构兼容性,当二进制文件架构与当前系统不匹配时,就会抛出"not found"错误,而非更直观的架构不兼容提示。
验证方法
在流水线中添加Shell步骤验证架构:
sh 'file /var/jenkins_home/tools/hudson.model.JDK/openjdk-19.0.2/jdk-19.0.2/bin/java' sh 'uname -m'
对比两者输出:比如uname -m输出x86_64(amd64架构),但file命令显示JDK是aarch64(arm64架构),就确认了架构不匹配。
解决方法
替换匹配架构的JDK
重新下载与Jenkins系统架构一致的OpenJDK 19.0.2安装包,替换Jenkins工具目录/var/jenkins_home/tools/hudson.model.JDK/openjdk-19.0.2/下的文件。使用系统已兼容的JDK
修改Jenkins的JDK配置,将openjdk-19.0.2的路径直接指向系统中可正常运行的/opt/java/openjdk,无需再单独下载。流水线临时指定JAVA_HOME(快速绕开)
无需修改全局配置,直接在流水线中指定兼容的JAVA_HOME:pipeline { agent any tools { maven 'Maven 3.9.0' } environment { JAVA_HOME = '/opt/java/openjdk' PATH = "${env.JAVA_HOME}/bin:${env.PATH}" } stages { stage ('Build') { steps { sh 'mvn clean package' } } stage ('Deploy') { steps { script { echo 'Deploy' } } } } }
内容的提问来源于stack exchange,提问作者clsbartek
相关产品推荐
相关产品推荐

