【问题标题】:JVM returns error 143JVM 返回错误 143
【发布时间】:2011-10-21 06:50:44
【问题描述】:

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

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

谢谢,

【问题讨论】:

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


    【解决方案1】:

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

    但是,请注意,应用程序可能会将 143 用于其自己的自定义结果。

    【讨论】:

      【解决方案2】:

      JVM 错误代码 143 表示 Internal field must be valid。这在OTN discussion forums 上进行了讨论。然而,结论似乎是某些东西扼杀了你的进程。

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

      【讨论】:

      • 您指出的参考是针对 Java ME 的。我认为这与(肯定)关于 Java SE 应用程序的 OP 问题无关。
      • 是的,事实上参考是没有意义的。但是,我相信这是一个杀死 Java 应用程序的进程(可能是注销)。但是我无法复制这个问题。
      • 其实,一段时间后我们发现它是一个杀毒软件。
      【解决方案3】:

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

      系统还会发送 CTRL_LOGOFF_EVENT 控制信号给每个 注销操作期间的进程。

      现在,在某些情况下,它会以错误代码 143 (SIGTERM) 终止 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:

      SIGTERM143 数字之间的关系在https://unix.stackexchange.com/questions/10231/when-does-the-system-send-a-sigterm-to-a-process#comment13523_10231 中进行了说明。

      【讨论】:

        猜你喜欢
        • 2022-08-12
        • 1970-01-01
        • 2017-12-14
        • 2017-03-28
        • 1970-01-01
        • 2014-04-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多