OS X 上的 JVM 始终以状态 0 退出(如 Bash 脚本中捕获的那样)



我有一个非常简单的Java类,它不做其他事情,但是:

public class TestMain {
  public static void main(String[] args) {
    System.out.println("Running!");
    System.exit(1111);
  }
}

,打包到TestOSX.jar文件中。

在 Windows 上,我可以运行上面的代码片段并显示%ERRORLEVEL%具有预期值,我在 OS X 上得到了不同的结果。

给定包含以下内容test.sh

#!/bin/bash
"/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java" -jar TestOSX.jar 
wait $!
updater_exit_val=$?
echo $updater_evit_val

,我总是打印0。

设置:OS X 10.11.1,Oracle Java 8 u60。

我在这里错过了哪些琐碎的细节?

您不会使用 & 将 Java 进程发送到后台。因此,wait在 java 进程退出后执行。它找不到您尝试等待的进程,因为它已经退出并因此给出返回代码 0。 $? 返回最后一个命令的返回代码(在您的情况下为 wait )。

您可以从脚本中删除等待,也可以通过在末尾添加&将 Java 进程发送到后台。

最新更新