检查main的退出状态

use*_*462 4 java

我正在从我的 Java 代码调用包含在同一文件夹中的 .class 的主类。该 main 是无效的,我想通过检查其退出状态来检查它是否成功:

    ...
    String[] arguments = new String[]{"a", "b"};
    AnotherClass.main(arguments);
    ...
Run Code Online (Sandbox Code Playgroud)

关于如何的任何想法,即 AnotherClass.main(arguments); 不返回任何东西?

谢谢你。

Anu*_*oob 5

更好的主意——而不是尝试调用 main 方法,而是在名为 testMain() 的另一个类中创建一个方法,该方法与 main 执行相同的操作,只是它返回退出代码而不是退出。


在该 main 方法中调用的 System.exit() 将关闭您的整个程序。您想在另一个线程中运行另一个 main 并找到该线程的退出代码。

构建另一个程序(将 jar 命名为 AnotherClass.jar),将 jar 添加到您的路径中并尝试以下操作:

int exitCode;
try {
    Process process = Runtime.getRuntime().exec("java AnotherClass.jar",new String[]{"arg1","arg2"});
    exitCode = process.waitFor();
    System.out.println(exitCode);
} catch (IOException e) {
    System.out.println("IO Error: " + e);
} catch (InterruptedException e) {
    System.out.println("Inturrupted: " + e);
}
Run Code Online (Sandbox Code Playgroud)

编辑:以下内容根本不起作用;System.exit() 杀死所有线程。

此代码将在新线程中运行另一个 main 方法,并且当它退出时不会损害您当前的程序。

Thread anotherProgram = new Thread(new Runnable() {
    @Override
    public void run() {
        AnotherClass.main(new String[]{"foo","bar"});
    }
});
anotherProgram.start();
Run Code Online (Sandbox Code Playgroud)