1

まあnetbeans Java 7u17プロジェクト。次の方法に依存する外部 jar ファイルを実行しようとしています。

ProcessBuilder pb = new ProcessBuilder(new String[]{"java", "-jar", String.format("%s %s", path, cmde)});
pb.redirectErrorStream(true);
Process proc = pb.start();

このアプリケーションを実行すると、次のエラー メッセージが表示されます。

Error: Unable to access jarfile C:/Users/XXXX/Documents/SampleApplication/ProcessTest/proc.jar -k

jar ファイルの依存関係 (他の jar ファイル) は、lib というフォルダーのすぐ隣にあります。PowerShellまたはコマンドプロンプトを開いて手動で入力すると

java -jar C:/Users/XXXX/Documents/SampleApplication/ProcessTest/proc.jar -k

アプリケーションは問題なく実行されます。私のJavaアプリケーションからではないのはなぜですか? スタックオーバーフローからの同様の問題に対して多くの回答を試みましたが、どれもうまくいきませんでした。いくつかの例: - 再起動された netbeans - クローズされて再オープンされたプロジェクト - 再構築された proc.jar

助けてくれてありがとう - ジョーイ

4

2 に答える 2

2

どちらも解決できませんでしたが、回避策があります。
jar を実行するバット スクリプトを作成し、そのバット ファイルを次のように実行します。

ProcessBuilder pb = new ProcessBuilder("c:\\...\\runproc.bat");

編集:

次のように、コマンド引数を 1 つずつ分割する必要があります。

ProcessBuilder("java", "-jar", path, arg1, arg2, ...)
于 2013-05-16T18:48:10.310 に答える
0

申し訳ありませんが、まだコメントを作成できませんが、使用する必要があるかもしれません:

//This is correct
String path = "C:\\xxx\\xxx";
//This is incorrect
String path = "C:/xxx/xxx";

出力にはWindows標準の「\」ではなく「/」が表示されるため、私は推測しています。

于 2013-05-16T18:00:28.983 に答える