2

ProcessBuilder を介して呼び出す非 Java 実行可能ファイルを使用する、作成したアプリケーションがあります。

ProcessBuilder pb = new ProcessBuilder(invocation);
pb.redirectErrorStream(true);
Process proc = pb.start();
InputStream is = proc.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);

ただし、そのアプリを外部の同じディレクトリに配置するのではなく、jar ファイル自体にきちんとバンドルしたいと考えています。このアプリを解凍せずに実行する方法はありますか?

ProcessBuilder を削除する必要がある場合は、それが機能する限り問題ありません。:)

4

2 に答える 2

5

基本的には、OS に ZIP ファイル内のアプリケーションを実行するように依頼することになります。最初に抽出せずにそれを行う方法を知りません。Java アプリケーションの場合でも、Java実行可能ファイルを呼び出す必要があります。これは、JAR ファイルを解析し、その中のクラスとリソースにアクセスする方法を認識しているためです。

私が考えることができる唯一のかなり簡単な回避策は、JAR の内容を一時フォルダーに抽出し、そこからプログラムを実行することです。これは、 java.util.zipのクラスを使用してプログラムで実行できます。

于 2009-08-26T16:58:37.240 に答える
1

実行可能ファイルと JAR を別の zip にバンドルするだけです。そうすれば、ユーザーが抽出すると、すべてが期待どおりの場所になります。

于 2009-08-26T17:03:52.067 に答える