通过使用 Apache Commons-Exec 我可以成功启动程序,但是启动程序在程序启动后暂停。
请问如何启动一个程序并立即退出,这样才不会阻塞后面的执行?
DefaultExecutor executor = new DefaultExecutor();
executor.execute( "cmd /c start C:\\Users\\xx\\program.exe");
我在Win7 64位。
谢谢
通过使用 Apache Commons-Exec 我可以成功启动程序,但是启动程序在程序启动后暂停。
请问如何启动一个程序并立即退出,这样才不会阻塞后面的执行?
DefaultExecutor executor = new DefaultExecutor();
executor.execute( "cmd /c start C:\\Users\\xx\\program.exe");
我在Win7 64位。
谢谢
根据文档,execute(CommandLine)
开始同步执行。也就是说,它阻塞了调用线程。您可能想要异步执行,所以使用execute(CommandLine command, ExecuteResultHandler handler)
. 例如,
DefaultExecutor executor = new DefaultExecutor();
executor.execute(new CommadLine("cmd /c start C:\\Users\\xx\\program.exe"),
new DefaultExecuteResultHandler());
听起来您需要使用DefaultExecuteResultHandler。
有关更多信息,请参阅教程(底部)。