我正在尝试使用java运行外部程序Decoder.exe: Runtime.getRuntime()。exec(“C:\ fullpath-and-so-on \ Decoder.exe -h”);像这样:
try{
Process p = Runtime.getRuntime().exec("C:\\fullpath-and-so-on\\Decoder.exe -h");
}
catch(Exception e){
e.printStackTrace();
}
这适用于我尝试过的所有其他程序。但每当我从java执行它时,Decoder.exe崩溃。 java执行正常并且不会生成任何异常,但被调用的程序Decodes.exe停止工作。当在单独的cmd窗口中运行时,程序Decoder.exe将完美执行。
有没有人遇到类似问题?当java运行exec和在cmd.exe中运行程序时有什么不同?有没有已知的解决方法,或者我只是在某个地方犯了错误?
非常感谢任何帮助! BR, 弗雷德里克
答案 0 :(得分:2)
停止工作你说?
decoder.exe是否将输出写入stderr或stdout?在这种情况下,您必须读取这些流,因为流的缓冲区非常小,如果这些缓冲区已满,则执行将停止。
这是一篇很棒的文章,虽然很旧,但它仍然有效: When Runtime.exec() won't
答案 1 :(得分:1)