编程语言
首页 > 编程语言> > Java runtime.exec无法正确执行

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