简体   繁体   中英

Can't launch .exe from Java

I am trying to launch a .exe file through a Java program. I used the following code:

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

the output is as follows:

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

But it is not opening.

Instead when I try

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

the program is opened.

I don't know what the problem is.

It's very likely that the space in your path is the problem.

I suggest you pass the arguments as an array instead of passing a single string containing the whole command (alternatively you could quote the spaces correctly, but that's not quite as easy).

Either

With ProcessBuilder this could look like this:

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

Also, I see no reason to invoke rundll32 at all in this scenario. This should work just as well:

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

You need to construct the path using File.separator . The path separator you are using will, in this case, will be system dependant.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM