0

我正在尝试通过 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

输出如下:

打开 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);

程序打开。

我不知道问题是什么。

4

2 回答 2

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();
于 2012-11-16T08:31:21.250 回答
0

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

于 2012-11-16T08:31:44.570 回答