嘲笑我:
两个几乎相同的jenkins从属服务器如何运行Oracle JDK 1.8 u60 Java有一个无法收集带有classdef错误的工件,而另一个很好吗?在这两种情况下,以下都是相同的
注意 我可以通过转到脚本控制台并运行以下
来复制它import org.apache.tools.ant.Location
Location l = new Location()
以良好的方式工作,并以与真实构建的方式相同的方式失败。
错误
java.io.IOException: remote file operation failed:... at
hudson.remoting.Channel@35f2fb2:linengbld50: java.io.IOException:
Remote call on linengbld50 failed
...
Caused by: java.io.IOException: Remote call on linengbld50 failed
...
Caused by: java.lang.NoClassDefFoundError: Could not initialize class
org.apache.tools.ant.Location
...
百胜差异
Good v Bad
仅限错误
答案 0 :(得分:0)
使用脚本控制台是一个很好的调试工具,因为它在适当的环境中执行。在每个节点上获得which java
的输出显示出差异。 @mmasi发现bad显示了一条路径,而good返回了null。
即使我们使用特定的JDK java运行slave,它也会在路径上找到第一个用于其活动的java(归档)。
修改替代方案,将java设置为1.8(centos)
sudo替代方案--install / usr / bin / java java \ /opt/tools/Java/jdk1.8.0_60/bin/java 1; java -version
断开并重新连接节点(重启从站)
重复小脚本控制台检查确定
重复构建测试(存档文件的微小构建)确定