ProcessBuilder
を使用してJavaコードからサードパーティのJARを実行しようとしています。このJARでは、このJARの実行時にインストールディレクトリにいなければなりません。そうでない場合は動作しません。以下は、このサードパーティのJAR用フォルダ構造である:ここでProcessBuilderが相対フォルダの場所にアクセスできない
C:\\Program Files\\MSG MCE Software I10
C:\\Program Files\\MSG MCE Software I10\\jre
C:\\Program Files\\MSG MCE Software I10\\jre\\bin
は、私が使用しているコードです:
String cmdLine = "\"jre\\bin\\java\" -Xms512m -Xmx1024m -cp \"C:\\Program Files\\MSG MCE Software I10\\msgmce.jar;C:\\Program Files\\MSG MCE Software I10\\*:.\" com.mmm.his.msgmce.Main -i \"C:\\drginput\\"+inFileName+"\" -o \"C:\\drgoutput\\"+outFileName+"\" ";
ProcessBuilder builder = new ProcessBuilder("cmd.exe", "/c", "cd \"C:\\Program Files\\MSG MCE Software I10\"&&"+cmdLine);
System.out.println("cmdLine->"+cmdLine);
Process p = builder.start();
あなたが見ることができるように、私は最初に、インストールディレクトリ"C:\\Program Files\\MSG MCE Software I10\"
に移動しようとすると、 java実行可能ファイルを実行しようとします。
問題は、"System cannot find file specified"
が、"jre/bin/java"
の相対パスを見つけることができないためです。
これは1台のマシンでは動作しますが、別のマシンでは動作しません。 ProcessBuilder
を作成してcmd.exe
を呼び出すと、インストールホームディレクトリに移動するので、jre/bin/java
ファイルにアクセスできるはずです。
これは1台のマシンでは動作するが、別のマシンでは動作しない理由が分かりますか?
あなたは 'C:\ Program Files \ MSG MCE Software I10 \'が存在しますか? –
はい、存在します。 EclipseとJARが異なるドライブ上にあることに気がつきました。 ProcessBuilderからDからCへのディレクトリの変更は機能していないようです。セキュリティ上の理由から、Javaの制限がありますか?わからない。 – Marquinio