我正在尝试运行外部程序 Decoder.exe使用java: 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, 弗雷德里克
最佳答案
你说停止工作?
decoder.exe 是否将输出写入 stderr 或 stdout?在这种情况下,您必须读取这些流,因为流的缓冲区非常小,如果这些缓冲区已满,执行将停止。
这是一篇很棒的文章,它很旧,但它仍然适用: When Runtime.exec() won't
关于Java runtime.exec 导致程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6168598/