web-dev-qa-db-ja.com

JREをWindows実行可能ファイルに埋め込みますか?

Javaアプリケーションを配布したいとします。

単一の実行可能ファイルとして配布したいとします。アプリケーションとそのすべての外部依存関係の両方を含む単一のファイルに.jarを簡単に作成できました(Antのハッキングがいくつかあります)。

ここで、Windowsで.exeファイルとして配布したいとします。 Niceツール(Launch4jなど)があれば、それは十分簡単です。

ただし、適切なJRE(またはその点でJRE)がインストールされているエンドユーザーに依存したくないと仮定します。アプリでJREを配布したいのですが、アプリをこのJREで実行する必要があります。 Windowsインストーラーの実行可能ファイルを作成し、必要なすべてのJREファイルを含むフォルダーを埋め込むのは簡単です。しかし、その後、私は配布しています installer 単一ファイルアプリではありません。

両方のアプリケーションを埋め込む方法はありますか、 そして JREを、アプリケーションランチャーとして機能する(インストーラーとしてではなく).exeファイルに入れますか?

61
perp

Avian および ProGuard ツールキットを使用してみてください。 Avianでは、アプリに軽量の仮想マシンを埋め込むことができます。 Linux、MacOS、Windows、iOSがサポートされています。また、ProGuardでは、大きなjarファイルを圧縮して、埋め込みの準備をすることができます。

24
i_home

これを行う新しいツールがあります:Packr
https://github.com/libgdx/packr

11
Andrejs

かなり少数のオプションがありますが、商業的にはこれは非常に優れています。

http://www.excelsior-usa.com/jet.html

GCJとVMKitの2つの主要なオープンソースオプションがあります。

http://gcc.gnu.org/Java/ および http://vmkit.llvm.org/

その他のより長いパスには、IKVM.NETが含まれます。

http://www.ikvm.net/

これは、静的にEXEにコンパイルできる.NET JVMです

7
metismo

Netbeansでは、Java SEプロジェクトをネイティブアプリケーションインストーラーにパッケージ化し、JREを埋め込むことができます。ここにあります: https://netbeans.org/kb/docs/Java/native_pkg .html :)

3
TianaR
1
saschabeaumont

私はこのパーティーに少し遅れていることを知っていますが、ej-technologies(彼らのものを愛している)にはexe4jこれは、おもしろいビジネスを必要とせずに、OPが望んだとおりに正確に行います。

http://www.ej-technologies.com/products/exe4j/overview.html

OpenSourceプロジェクトで作業している場合、無料のライセンスが提供されます(連絡するだけです)。商用プロジェクトの場合、ライセンスが必要です...しかし、ライセンスで69米ドルで、安くて価値があります。

彼らのウェブサイトから:

If you want your own process name instead of Java.exe in the task manager
and a user friendly task-bar grouping, exe4j does the job for you.

exe4j helps you with starting your Java applications in a safe way, displaying
native splash screens, detecting or distributing suitable JREs and JDKs,
startup error handling and much more.
1
SnakeDoc

JSmoothは、ドキュメントに従ってこれを行うことができます。組み込みのJREなしで試しただけですが、非常に満足しています。 antを使用してスクリプトを作成でき、Linux上でビルドします。

http://jsmooth.sourceforge.net/features.php

0
Kachwahed

Engima Projector x86/x64はBoxedApp Packerよりも優れていることがわかりました

Packrでソフトmiminizejreを取得する場合は、アプリケーションmyapp.jarをlauncher\jre\bin \にコピーします

インストールされたjreの例C:\ Program Files\Files\Java\1.8.0_xxx\bin\javaw.exeからlauncher\jre\bin \にコピーします

Launcher\jre\bin \からEngima Protector入力-> javaw.exeを開きます

高圧縮が必要な場合は[オプション]に移動し、[その他]を検索します->コマンドライン "-jar myapp.jar"

そして、保護をクリックして、dll全体とjarがexeになるのを待ちます

Myapp.jarがEclipseによって「生成されたJARに必要なライブラリをパッケージ化する」ように生成されることを確認してください。 。

しかし、BoxedApp Packerも同じです。BoxedAppPackerはEngima Protectorよりも少し大きいです。プロテクターは、ほとんどの場合、javaw.exeにアセット/リソースを埋め込む小さな最適なものです。 jarファイルをクラックできないよりも... libディレクトリなしで4 mb以下のexeに自分のjarに満足していることを願っています-jvm.cfgエラーメッセージに問題がある場合は、埋め込まれたexeをルートにコピーしないことを意味しますjreまたはjdkのディレクトリ

埋め込みexeがjreまたはjdkのルートディレクトリ外にあることを確認してください。

Protector x86を使用する場合、i586、jre x64の場合はProtector x64を使用する必要があるよりも、問題がないことを願っています

Jre x86/i386でProtector x64を使用する場合-問題ありません。正常に動作します。

宜しくお願いします

//編集:

更新された新しいバージョンEXCELSIOR JET + VIRTUAL BOX OR PROTECTORは、ほぼ最高の「組み込みアプリケーション」です

YouTubeを確認してください: https://www.youtube.com/watch?v=ctbIxq-1MGE

0
SourceSkyBoxer

Install4jは、この目的のための素晴らしいツールです。また、JSresをJSmoothにバンドルしようとしましたが、できませんでしたが、JSmoothまたはlaunch4j-allをチェックアウトすることもできます。

0
user1330488