Jenkins JNLP Agent连接后立即终止报AccessControlException错误
问题根因
该报错是Open Web Start(OWS)的Java安全沙箱默认限制导致的:JNLP应用默认没有权限读取Jenkins remoting组件依赖的自定义系统属性hudson.util.RingBufferLogHandler.defaultSize,触发AccessControlException后导致类初始化失败,所以Agent刚建立连接就会终止运行。你之前尝试升级/降级JDK、重启机器无效,是因为问题本质和JDK版本、运行环境重启无关,属于权限配置问题。
可行解决方案
按优先级从高到低排列:
- 方案1:改用命令行直接启动Agent(最稳定,永久规避沙箱限制)
登录Jenkins Master的节点管理页面,找到对应Windows Agent的配置页,复制官方提供的Agent启动命令,格式如下:
在Windows Agent上把上述命令保存为java -jar agent.jar -jnlpUrl http://<你的Jenkins地址>/computer/<节点名>/jenkins-agent.jnlp -secret <你的节点专属密钥> -workDir "D:\<你的Agent工作目录路径>".bat脚本,直接运行脚本即可启动Agent,无需依赖Open Web Start。如需开机自启,把脚本加入Windows开机启动项即可。 - 方案2:修改Open Web Start的Java安全策略,放开权限
- 找到Open Web Start使用的JDK对应的安全策略文件,默认路径为:
C:\Program Files\OpenWebStart\jre\lib\security\java.policy,如果是使用系统安装的JDK启动OWS,则路径为系统JDK目录下的jre\lib\security\java.policy - 编辑该文件,在末尾的
grant {块中添加如下配置:
permission java.util.PropertyPermission "hudson.util.RingBufferLogHandler.defaultSize", "read"; // 如后续出现其他hudson/jenkins前缀的属性权限报错,可直接添加通配符权限: permission java.util.PropertyPermission "hudson.*", "read,write"; permission java.util.PropertyPermission "jenkins.*", "read,write";- 保存文件后重启Open Web Start,重新运行JNLP文件即可。
- 找到Open Web Start使用的JDK对应的安全策略文件,默认路径为:
- 方案3:关闭Jenkins节点的Web Start安全策略限制
登录Jenkins Master,进入对应Windows Agent的配置页,找到「启动方法」模块下的高级选项,取消勾选「启用Web Start安全策略」,保存配置后重新启动Agent即可。
验证检查项
配置完成后可先做如下检查:
- 运行
java -version确认当前Windows系统环境变量中配置的JDK版本和你预期使用的版本一致,无多版本JDK冲突 - 确认启动Agent的Windows账号对Agent工作目录有完整的读写权限
内容的提问来源于stack exchange,提问作者Bilawal Wajid Ali
相关产品推荐
相关产品推荐

