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 に答える