-1

重複の可能性:
Java プログラムを別のプログラムで実行する

Eclipse で作成した Java アプリケーションから jar ファイルを実行しようとしています。以下のソースコードを使用してjarファイルを実行すると、Unable to access jarfileエラーが発生します

Process process = run.exec("java -jar  TestJava.jar");
InputStream inError = process.getErrorStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inError));
System.out.println("Error=" + bufferedReader.readLine());
4

4 に答える 4

1

TestJava.jar別のディレクトリにあるようです。このコードを Eclipse 内で実行している場合、現在の作業ディレクトリは Eclipse プロジェクトのフォルダーと同じになります (別の方法で構成していない限り、これが Eclipse のデフォルトの実行場所です)。TestJava.jar絶対パスまたは現在の作業ディレクトリからの相対パスでパスを指定します。

Processもう 1 点注意する必要があります。作成している のエラー ストリームと出力ストリームの両方を使用する必要があります。インスタンスのデフォルトの出力/エラー ストリーム バッファ サイズはProcessそれほど大きくないため、いっぱいになると、Processバッファ スペースを増やすために無期限にブロックされます。各ストリームを別々の で消費することをお勧めしますThread

于 2012-09-05T17:23:22.050 に答える
0

このプロセスを実行する作業ディレクトリを設定します。次のステートメントを使用して作業ディレクトリを設定します。

Runtime.getRuntime().exec(command, null, new File("path_to_directory"));
于 2012-09-05T17:21:42.777 に答える
0

まず、cmd ウィンドウで java -jar コマンドを実行して、TestJava.jar を実行できるかどうかを確認します。次に、コードから同じコマンドを実行してみてください。

Runtime runtime = Runtime.getRuntime();
Process proc = runtime.exec("java -jar TestJava.jar");
System.exit(0);
于 2012-09-05T17:22:21.843 に答える
0

Java コマンドへのフル パスを指定する必要があります。

たとえば、ウィンドウの下では、次のようなものが必要です

C:/Program Files/java/jre/bin/java.exe

ProcessBuilder&Runtime.execコマンドを実行しようとするときにシステムパスを考慮しないでください

于 2012-09-05T17:22:30.397 に答える