无法从Java启动.exe

时间:2012-11-16 08:22:55

标签: java process runtime.exec

我正在尝试通过Java程序启动.exe文件。我使用了以下代码:

System.out.println("Opening " + path);
Process exec;
exec = Runtime.getRuntime().exec("rundll32 SHELL32.DLL,ShellExec_RunDLL " + path);//path is the path of the exe file which is passed as an argument from another java class

输出如下:

Opening C:\Program Files (x86)\C-Free 5\CppIDE.exe

但它没有开放。

相反,当我尝试

String pat="C:\\Program Files (x86)\\C-Free 5\\CppIDE.exe";
Process exec;
exec = Runtime.getRuntime().exec("rundll32 SHELL32.DLL,ShellExec_RunDLL " + pat);

程序已打开。

我不知道问题是什么。

2 个答案:

答案 0 :(得分:3)

路径中的空间很可能就是问题所在。

我建议您将参数作为数组传递,而不是传递包含整个命令的单个字符串(或者您可以正确引用空格,但这并不是那么容易)。

使用ProcessBuilder,这可能如下所示:

ProcessBuilder pb = new ProcessBuilder("rundll32", "SHELL32.DLL,ShellExec_RunDLL", path);
Process p = pb.start();

此外,在这种情况下,我认为根本没有理由调用rundll32。这也应该有效:

ProcessBuilder pb = new ProcessBuilder(path);
Process p = pb.start();

答案 1 :(得分:0)

您需要使用File.separator构建路径。在这种情况下,您使用的路径分隔符将取决于系统。