【发布时间】:2014-02-20 09:21:25
【问题描述】:
我得到一个 exe 文件,我必须在 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-program 会继续,并且
proc.exitValue()
是“1”,因此 java 识别出我已经终止了该进程。我也尝试在批处理文件中编写命令行并使用 .exec() 执行它,但它没有改变任何东西。
真正让我感到困惑的是,它可以通过 Windows 命令行完美运行,但不能通过 .exec() 运行。有谁知道什么可能导致这样的问题?还是更有可能是 test.exe 引起了问题?
致以最诚挚的问候
编辑:在 .exec 中写下错误的路径
【问题讨论】:
-
也许stackoverflow.com/questions/8595748/java-runtime-exec 可以帮助你,似乎是一个类似的问题。
-
当您在控制台中运行该程序时,它是否会在控制台中产生输出?还是从标准输入读取?
-
在继续之前,请使用
ProcessBuilder! -
test.exe是否输出大量文本?可能是它在尝试写入其输出时被阻止,而您似乎没有从中读取 -
是的,它确实会在控制台和 log.txt 中产生大量输出。减少控制台中的输出可能会有所帮助(不过,我必须联系 test.exe-programm 的程序员才能这样做)?
标签: java windows-server-2008-r2 runtime.exec java-6