Jenkins:致命:无法初始化类hudson.util.ProcessTree $ UnixReflection

时间:2017-11-16 23:14:14

标签: android ios jenkins java-9

FATAL: Could not initialize class hudson.util.ProcessTree$UnixReflection
java.lang.NoClassDefFoundError: Could not initialize class hudson.util.ProcessTree$UnixReflection
at hudson.util.ProcessTree$UnixProcess.kill(ProcessTree.java:647)
at hudson.util.ProcessTree$UnixProcess.killRecursively(ProcessTree.java:668)
at hudson.util.ProcessTree$UnixProcess.killRecursively(ProcessTree.java:667)
at hudson.util.ProcessTree$Unix.killAll(ProcessTree.java:589)
at hudson.Launcher$LocalLauncher.kill(Launcher.java:949)
at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:502)
at hudson.model.Run.execute(Run.java:1737)
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
at hudson.model.ResourceController.execute(ResourceController.java:97)
at hudson.model.Executor.run(Executor.java:421)

Jenkins ver。 2.73.3 MACOSX

进行iOS构建并上传到hockeyapp。 .ipa创建成功,错误似乎发生后,似乎在hockeyapp上传。我有一个可以正常工作的android项目并成功上传到hockeyapp。

在更新Jenkins和插件后立即开始获取此信息。以前工作过。

有什么想法吗?

3 个答案:

答案 0 :(得分:2)

运行Android版本时发生在我身上 (Jenkins构建2.86,我刚刚从2.87降级或者更新,因为其他的失败)

Build step 'Invoke Gradle script' changed build result to SUCCESS
FATAL: Could not initialize class 
hudson.util.ProcessTree$UnixReflection
java.lang.NoClassDefFoundError: Could not initialize class 
hudson.util.ProcessTree$UnixReflection
at hudson.util.ProcessTree$UnixProcess.kill(ProcessTree.java:647)
at hudson.util.ProcessTree$UnixProcess.killRecursively(ProcessTree.java:668)
at hudson.util.ProcessTree$Unix.killAll(ProcessTree.java:589)
at hudson.Launcher$LocalLauncher.kill(Launcher.java:949)
at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:510)
at hudson.model.Run.execute(Run.java:1724)
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
at hudson.model.ResourceController.execute(ResourceController.java:97)
at hudson.model.Executor.run(Executor.java:421)
Finished: FAILURE

首先成功然后失败,嗯weeeird

我记得最近我已经安装了java 9进行实验,但仍然将java 8设置为usl / libexec / java_home,在我的.zshrc中如下:

export JAVA_HOME=`/usr/libexec/java_home -v 1.8.0_152`

但这根本没有用,所以我跟Java 9说再见

sudo rm -rf /Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk

然后去管理Jenkins - >配置系统 - >环境变量  并添加了

/Library/Java/JavaVirtualMachines/jdk1.8.0_152.jdk/Contents/Home

作为JAVA_HOME

在詹金斯重新启动我的构建后,像魅力一样运行

答案 1 :(得分:0)

在使用Java 8的同时,擦除Jenkins上的当前工作区可以解决我的错误。更新gradle和sonarqube插件版本后出错。

答案 2 :(得分:0)

我们已经在旧的Jenkins服务器上间歇性地看到了这一点,我认为我们已经对其进行了跟踪。当作业运行后还剩下后台进程时,就会发生这种情况,并且可以使用此作业脚本轻松复制该后台进程:

$bodyContent

错误sleep 30 & exit 0 来自此静态初始化程序:

Could not initialize class hudson.util.ProcessTree$UnixReflection

在Java 8中 static { try { Class<?> clazz = Class.forName("java.lang.UNIXProcess"); PID_FIELD = clazz.getDeclaredField("pid"); PID_FIELD.setAccessible(true); if (isPreJava8()) { DESTROY_PROCESS = clazz.getDeclaredMethod("destroyProcess",int.class); } else { DESTROY_PROCESS = clazz.getDeclaredMethod("destroyProcess",int.class, boolean.class); } DESTROY_PROCESS.setAccessible(true); } catch (ClassNotFoundException e) { LinkageError x = new LinkageError(); x.initCause(e); throw x; } catch (NoSuchFieldException e) { LinkageError x = new LinkageError(); x.initCause(e); throw x; } catch (NoSuchMethodException e) { LinkageError x = new LinkageError(); x.initCause(e); throw x; } } 的签名已更改。Java9及更高版本可能进行了进一步更改。您将需要一个Jenkins想要在该类中找到的JDK。