私のコンピューターにはLaunch4Jがあり、素晴らしいプログラムです。私が興味を持っている機能の1つは、一般的な.EXEファイルにJREをバンドルする機能です。ただし、これを行う方法を説明したドキュメントは見つかりません。
JREをEXEにバンドルするにはどうすればよいですか?さらに、コンパクトでポータブルなJREを実行するにはどうすればよいですか? Oracleのダウンロードリンクは、インストーラパッケージ用です。
いくつかの試みの後、私は最終的に私のアプリケーションにjreをバンドルするための回避策を取得します:
アプリをZipファイルとしてパッケージ化し、次のフォルダーを中に入れます。
containerFolder
|- jre
|-bin (in bin there is Java.exe)
|-lib
|- cfg (to save the user configuration, but it's not needed)
|- bin (my application with the .exe and the .jar and all the other stuff)
Launch4jのxmlファイルで、次のようにjreを構成します。
<jre>
<path>../jre</path>
<opt>-DgvSIG.confDir=../cfg</opt>
</jre>
ここでのコツは、パスがJava.exeファイルへではないことです。 jreへのパスは.exeの位置に相対的であり、Java.exeファイルの前の1つのフォルダーを指す必要があります
私が使用しているjreフォルダーは、Windowsシステムにインストールされたjreフォルダーからコピー&ペーストするだけです。
私は次のことをしましたが、それはver Launch4j 3.11を使用してうまくいきました:
必要なオプションをすべて設定したLaunch4jで、バンドルされたJREパスを「jre」に設定します
Launch4Jを使用してJavaアプリケーションを特定のJREにバンドルする実際の例は、 https://github.com/vZome/vzome/blob/master/desktop/にあります。 platform/windows/README.md 。この特定のディストリビューションは、requireに設定されています- vZome ターゲットプラットフォームで見つかったJREではなく、バンドルJREを使用する。
お役に立てれば。
これをやったばかりです。上記はjreをバンドルする方法を明確に説明しています。
ここで、苦労した経験を共有します。 launch4jでラッパーexeを作成した後にインストーラーexeを作成する場合は、launch4jおよびjreのファイルパスに注意してください。これは私の問題を解決するために使用した私のパスです:
launch4j、bin/jre、resources/bin/jre。
launch4j、bin、およびリソースは同じレベルです。