我正在从我的 Java 代码调用包含在同一文件夹中的 .class 的主类。该 main 是无效的,我想通过检查其退出状态来检查它是否成功:
...
String[] arguments = new String[]{"a", "b"};
AnotherClass.main(arguments);
...
Run Code Online (Sandbox Code Playgroud)
关于如何的任何想法,即 AnotherClass.main(arguments); 不返回任何东西?
谢谢你。
更好的主意——而不是尝试调用 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)