我有一个jar的UI包装器。当从UI触发事件“submitButton”时,将调用以下方法来执行它。 jar在单独的进程中执行,但只有在调用进程(即UI服务器)停止后才发送邮件。知道为什么吗? (当从cmd行执行时,jar工作正常)。
public static String doSendMail(){
// Run a java app in a separate system process
Process process;
try {
ProcessBuilder pb = new ProcessBuilder("java", "-jar", "SendMail.jar", ">>", "test.log");
process = pb.start();
InputStream in = process.getInputStream();
InputStream err = process.getErrorStream();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return "Success";
}
答案 0 :(得分:1)
一些问题:>>
是shell重定向。您正在直接运行子进程,因此可能会被忽略。此外,您从未处理过程中写入的输出,因此可能会缓冲并阻止该过程,直到UI结束。