Java runtime.exec无法正确执行
作者:互联网
我得到一个exe-File,我必须在Windows Server 2008 R2上使用Java(版本6)执行.现在有一个我不太懂的问题.使用命令行执行文件时
"C:\test.exe param1 param2"
它工作正常,但当我执行文件时
Process proc = Runtime.getRuntime().exec("C:\\test.exe param1 param2");
proc.waitFor();
我可以在Windows任务管理器中看到test.exe并且它开始运行(它会创建一个说明该情况的日志),但之后它就不再执行任何操作了. test.exe以0%无限运行,我必须手动终止进程.这样做之后,java程序继续进行
proc.exitValue()
是“1”,因此java认识到我已经杀死了这个进程.我还尝试在批处理文件中编写命令行并使用.exec()执行它,但它没有改变任何东西.
让我感到困惑的是,它通过Windows命令行完美运行,但不通过.exec().有谁知道什么可能导致这样的问题?或者更可能是test.exe导致问题?
最好的问候
编辑:在.exec中写下错误的路径
解决方法:
由于你的程序产生了很多输出,我的假设是它试图写入标准输出(这是Linux下的管道,不知道Windows).
尝试这个:
final byte[] devnull = new byte[1024];
final ProcessBuilder builder = new ProcessBuilder("C:\\test.exe", "param1", "param2")
.redirectErrorStream(true);
final Process p = builder.start();
final InputStream stdout = process.getInputStream();
// Purge stdout
while (stdout.read[devnull] != -1);
// Grab the process' exit code here
标签:runtime-exec,java,java-6,windows-server-2008-r2 来源: https://codeday.me/bug/20191007/1864897.html