JVM返回错误143

时间:2011-08-05 23:57:58

标签: java windows-server-2003 scheduled-tasks

在Windows 2003上作为计划任务运行的Java应用程序崩溃,没有任何日志或任何有助于找出发生的事情的内容。唯一可用的信息是应用程序返回代码143(8F)。从计划任务日志中检索到该错误代码。

有谁知道错误代码(143)代表什么?注销用户是否可能导致应用程序终止?

谢谢,

3 个答案:

答案 0 :(得分:7)

143通常意味着应用程序因SIGTERM命令而终止。另请参阅https://unix.stackexchange.com/questions/10231/when-does-the-system-send-a-sigterm-to-a-process

但请注意,应用程序可能会使用143作为自己的自定义结果。

答案 1 :(得分:5)

JVM错误代码143表示Internal field must be valid。这在OTN discussion forums上讨论。然而,结论似乎是一个杀死你的过程的东西。

我怀疑这可能是由用户注销造成的。

答案 2 :(得分:2)

用户注销会向所有正在运行的进程发出CTRL_LOGOFF_EVENT信号。来自https://msdn.microsoft.com/en-us/library/windows/desktop/aa376876(v=vs.85).aspx

  

系统还会向每个人发送CTRL_LOGOFF_EVENT控制信号   在注销操作期间处理。

现在,在某些情况下,它将使用错误代码143SIGTERM)终止Java应用程序。请参阅https://bugs.openjdk.java.net/browse/JDK-6871190

嗯,无论如何,阻止这种情况发生的方法是使用-Xrs选项启动Java。来自https://www.ibm.com/support/knowledgecenter/SSYKE2_8.0.0/com.ibm.java.win.80.doc/diag/appendixes/cmdline/Xrs.html

  

设置-Xrs可防止Java™运行时环境处理任何问题   内部或外部生成的信号,如SIGSEGV和   SIGABRT。

因此,您应该使用以下内容启动Java应用程序:

>java -Xrs -jar myapplication.jar

PS:

https://unix.stackexchange.com/questions/10231/when-does-the-system-send-a-sigterm-to-a-process#comment13523_10231中解释了SIGTERM143号码之间的关系。