如何强制Jenkins 2.107.2启动代理时使用Java 1.8.0?
如何强制Jenkins SSH代理使用Java 1.8启动
看到你遇到的Jenkins代理启动报错,确实是Java版本不兼容的典型问题——虽然已经装了Java 1.8,但Jenkins SSH代理还是默认调用了系统的Java 1.7。下面给你几个实用的解决办法,亲测有效:
[05/02/18 10:17:59] [SSH] Starting sftp client. [05/02/18 10:17:59] [SSH] Copying latest slave.jar... [05/02/18 10:17:5...
方法1:在Jenkins节点配置中直接指定JDK路径
这是最推荐的方式,不需要修改代理服务器的全局设置:
- 登录Jenkins后台,进入 Manage Jenkins > Manage Nodes and Clouds
- 找到目标代理节点,点击右侧的 Configure
- 滚动到 Node Properties 区域,勾选 Tool Locations
- 点击 Add,在下拉菜单选择 JDK,然后在 Home 栏填入你的Java 1.8绝对路径,比如:
(不确定路径的话,可以在代理服务器上执行/usr/lib/jvm/java-1.8.0-openjdk-amd64ls /usr/lib/jvm查看具体目录) - 保存配置后,重启该代理节点,Jenkins就会强制用指定的Java 1.8启动代理了
方法2:修改代理服务器的SSH登录环境变量
如果不想在Jenkins里配置,也可以直接调整代理服务器的用户环境:
- 登录到代理服务器,编辑当前SSH用户的
~/.bashrc或~/.profile文件(根据你使用的shell选择) - 添加以下两行配置:
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64 export PATH=$JAVA_HOME/bin:$PATH - 执行
source ~/.bashrc(或对应的配置文件)让修改即时生效 - 回到Jenkins重启代理节点,SSH登录后环境变量会优先加载Java 1.8
方法3:自定义代理启动命令
如果前两种方法都没生效,可以直接指定启动代理的Java命令:
- 进入代理节点的 Configure 页面,找到 Launch method 下的 Launch agent via SSH
- 点击 Advanced 展开更多设置
- 在 Prefix Start Agent Command 栏填入Java 1.8的完整执行路径,比如:
/usr/lib/jvm/java-1.8.0-openjdk-amd64/bin/java - 保存后重启代理,Jenkins会直接用这个指定的Java命令运行slave.jar
提醒一下:操作前可以在代理服务器上手动执行 [你的Java1.8路径]/bin/java -version 确认路径有效,避免填错导致启动失败。
内容的提问来源于stack exchange,提问作者Jeremyapple




