Jenkins执行器集成OpenJDK后Java Web Start不可用的远程连接方案问询
Jenkins Windows执行器替代Java Web Start连接方案
方案1:官方新版JNLP代理(首推,无额外依赖)
旧版Java Web Start浏览器插件早已废弃,现在Jenkins官方提供了独立的JNLP代理包,不需要依赖浏览器组件,直接用你本地的OpenJDK即可运行:
- 首先在Jenkins主节点进入「节点管理」,新增节点时,启动方式选择通过JNLP协议启动代理
- 节点创建完成后,页面会生成专属启动命令,直接到Windows执行器的命令行运行该命令即可,命令示例如下:
java -jar agent.jar -jnlpUrl http://<你的Jenkins主节点地址>/computer/<你的节点名称>/jenkins-agent.jnlp -secret <节点专属密钥> -workDir "C:\Jenkins\WorkDir" - 运行后即可自动完成和主节点的连接,全程不需要打开浏览器。
方案2:封装为Windows系统服务(适合长期运行)
如果需要执行器开机自动连接,无需每次手动运行命令,可以用winsw工具把JNLP启动命令封装为系统服务:
- 把下载好的
agent.jar和winsw二进制文件放到同一个目录 - 编写对应的服务配置XML文件,指定启动命令、工作目录、日志路径等参数
- 执行命令完成服务注册和启动:
winsw install winsw start
服务注册完成后,Windows开机就会自动运行Jenkins代理进程。
方案3:SSH主动连接(主节点统一管理)
如果不想在执行器手动配置代理,也可以通过SSH协议让主节点主动连接执行器,自动推送代理程序启动:
- 先在Windows执行器上开启系统内置的OpenSSH服务,配置好Jenkins专用账号的登录权限(支持密码或SSH密钥认证)
- 主节点新增节点时,启动方式选择通过SSH启动代理,填写执行器的IP、账号、认证信息,shell类型选择对应Windows的cmd或PowerShell即可
- 配置完成后主节点会自动通过SSH连接到Windows执行器,上传并启动代理进程,无需在执行器做额外配置。
临时兼容方案(仅应急使用,不推荐长期用)
如果一定要沿用旧的JNLP文件双击启动的方式,可以安装开源的IcedTea-Web工具,它是Java Web Start的开源替代实现,支持新版OpenJDK,安装后会自动关联jnlp格式文件,双击即可运行。该方案安全性和稳定性不如官方原生方案,仅适合临时过渡使用。
注意事项
- 确保执行器和主节点之间的端口连通:JNLP协议默认需要开放主节点的50000端口,SSH协议默认需要开放执行器的22端口,主节点的Web服务端口也要保证执行器可以正常访问
- 本地OpenJDK版本需要符合你当前Jenkins版本的代理运行要求,推荐使用LTS版本的JDK 11或JDK 17,避免版本不兼容问题
内容的提问来源于stack exchange,提问作者Azusena Huacache
相关产品推荐
相关产品推荐

