我正在从我的应用程序内部执行 Java 类。
proc = Runtime.getRuntime().exec("java Test");
我怎样才能识别是否Test
执行成功与否(即没有例外)?
重定向输出/错误:
proc = Runtime.getRuntime().exec(new String[] {
"java",
mclass,
">NUL 2>test.txt"
});
From cmd
:
java Main >NUL 2>test.txt
process.waitFor();
int exitCode = process.exitValue();
if(exitCode == 0) { // success }
else { // failed }
这有效,如果Test
设计正确并返回适当的退出代码(通常,如果出现问题,则返回 >0)。
如果你想得到Test
s 输出/错误消息来确定出了什么问题,你应该得到proc.getInputStream()
(这返回子进程的输出流),proc.getErrorStream()
并在单独的线程中从输入流中读取。
请注意,如果子进程写入错误/输出流并且没有读取器,则子进程将被阻止。因此,读取进程的错误/输出流在任何情况下都是有用的。
避免子阻塞的另一个选择是将其错误/输出重定向到文件和/或/dev/null
(对于 Windows 为“NUL”):
Runtime.exec("java Test >/dev/null 2>&1");
Runtime.exec("java Test >/dev/null 2>erroroutput");
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)