Java - apache commons exec,异常执行行为

时间:2015-07-02 17:57:09

标签: java apache command-line command-prompt

我正在使用apache commons exec

运行此命令
C:\\Windows\\System32\\cmd.exe /C start ".\\test" /D ".\\test1" .\\test1\\ldecod.exe -p InputFile=\"test.h264\" -p OutputFile="test.yuv"

该命令通过命令提示符正常运行,即启动ldecod.exe并解码test.h264,但是当通过apache commons exec运行相同的命令时,它只打开文件夹" test1"

这里发生了什么?

编辑:使用以下代码

String cmd = "C:\\Windows\\System32\\cmd.exe /C start \".\\test\" /D \".\\test1\" .\\test1\\ldecod.exe -p InputFile=\"test.h264\" -p OutputFile=\"test.yuv\"";
CommandLine commandline = CommandLine.parse(cmd);
DefaultExecutor exec = new DefaultExecutor();
exec.execute(commandline);

1 个答案:

答案 0 :(得分:0)

您需要将/ b参数添加到windows start命令。这将在不启动新命令提示符的情况下运行您的命令。 来自docs

  

/ b - 在不打开新的命令提示符窗口的情况下启动应用程序。除非应用程序启用CTRL + C处理,否则将忽略CTRL + C处理。使用CTRL + BREAK中断应用程序。

您运行它的方式,start是产生一个新进程。我怀疑ldecod.exe正在运行,但启动命令(和你的程序)在你关闭命令提示符之前不会终止。