web-dev-qa-db-ja.com

Javaプログラムを.exeファイルに変換する方法は?

Javaソースファイル(* .Java)またはクラスファイル(* .class)がある場合、それを.exeファイルに変換する方法を教えてください。

私は自分のプログラム用のインストーラも必要です。

473
Waseem

javapackager

Java Packagerツールは、配布するためにJavaおよびJavaFXアプリケーションをコンパイル、パッケージ化、および準備します。 javapackagerコマンドはコマンドラインバージョンです。

- Oracleのドキュメント

javapackagerユーティリティはJDKに同梱されています。それは、とりわけ-native exeフラグを持つ.exeファイルを生成することができます。

WinRun4J

WinRun4jはWindows用のJavaランチャーです。これはjavaw.exeに代わるもので、次のような利点があります。

  • クラスパス、メインクラス、vm引数、プログラム引数の指定にはINIファイルを使用します。
  • タスクマネージャに表示されるカスタム実行可能ファイルの名前。
  • 追加のJVMは、より柔軟なメモリ使用を主張します。
  • カスタムアイコンのための組み込みのアイコンの置き換え。
  • [その他の箇条書きが続く]

- WinRun4JのWebページ

WinRun4Jはオープンソースのユーティリティです。それは 多く の特徴を持っています。

packr

JAR、アセット、およびJVMをWindows、Linux、およびMac OS Xで配布するためにパッケージ化し、ネイティブの実行可能ファイルを追加してネイティブアプリのように見せる。 PackrはGUIアプリケーションに最適です。

- packr README

packrはもう一つのオープンソースツールです。

JSmooth

JSmoothはJava実行可能ラッパーです。 Javaアプリケーション用のネイティブWindowsランチャー(標準の.exe)を作成します。インストールされたJava VMを単独で見つけることができるため、Javaの展開はよりスムーズでユーザーフレンドリーになります。

- JSmoothのウェブサイト

JSmoothはオープンソースで機能もありますが、とても古いです。最後のリリースは2007年でした。

JexePack

JexePack は、Javaアプリケーション(クラスファイル)を、必要に応じてそのリソース(GIF/JPG/TXT/etcなど)と一緒に1つにパッケージ化できるコマンドラインツール(自動スクリプト作成に最適)です。 圧縮 32ビットWindows EXE。SunのJava Runtime Environmentを使用して実行されます。コンソールアプリケーションとウィンドウアプリケーションの両方がサポートされています。

- JexePackのウェブサイト

JexePackは体験版です。生産的使用には支払いが必要であり、このツールで作成されたexeファイルは支払いなしで「リマインダー」を表示します。また、最後のリリースは2013年でした。

InstallAnywhere

InstallAnywhereを使用すると、開発者はあらゆるプラットフォーム用のプロフェッショナルなインストールソフトウェアを簡単に作成できます。 InstallAnywhereを使用すると、業界の変化にすばやく適応し、早く市場に参入し、魅力的なカスタマーエクスペリエンスを提供できます。出荷する前に、プロジェクトのOSSコンポーネントの脆弱性を知っておいてください。

- InstallAnywhereのウェブサイト

InstallAnywhereは、Javaベースのプログラム用のインストーラを生成する商用/エンタープライズパッケージです。それはおそらく.exeファイルを作成することが可能です。

実行可能JARファイル

.exeファイルの代わりに、 JARマニフェストへのエントリポイントの追加 を使用すると、ダブルクリック時に自動的に実行されるJARファイルを作成できます。


詳細については

このトピックに関する優れた情報源は、Excelsiorの記事「 JavaからEXEへの変換 - なぜ、いつ、いつから、どのように 」です。

関連記事 " EXEからEXEへの変換ツールのベストJAR、無料版と商用版 "もご覧ください。

306
Jay

Launch4j

Launch4jは、軽量のWindowsネイティブ実行可能ファイルにjarとして配布されているJavaアプリケーションをラップするためのクロスプラットフォームツールです。実行可能ファイルは、特定のJREバージョンを検索するように設定することも、バンドルされたものを使用するように設定することもでき、初期/最大ヒープサイズなどの実行時オプションを設定することもできます。ラッパーは、適切なJREが見つからない場合に、アプリケーションアイコン、JREより前のネイティブスプラッシュスクリーン、カスタムプロセス名、およびJavaダウンロードページを通じて、より優れたユーザーエクスペリエンスを提供します。

- Launch4jのウェブサイト

106
the.duckman

UPDATE:GCJは停止しています。それは 2016年にGCCプロジェクトから公式に削除されました 。それ以前でさえ、それは実質的に7年間放棄されました、そして、いずれにせよ は十分に完全ではありませんでした 実行可能な代替Java実装として機能します。

別のJava AOTコンパイラを見つけてください。

GCJ:GNU Java用コンパイラ は、JavaソースコードをWindows実行可能ファイルを含むネイティブマシンコードにコンパイルできます。

JavaのすべてがGCJでサポートされているわけではありませんが、特にGUIコンポーネント( どのJava AP​​Iがサポートされていますか?サポートはどの程度完了しますか?FAQ )からの質問。私はGCJをあまり使用していませんが、コンソールアプリケーションで行った限られたテストから、それはうまくいくようです。

GCJを使用してスタンドアロンの実行可能ファイルを作成する1つの欠点は、結果のEXEのサイズが非常に大きくなる可能性があることです。 GCJで簡単なコンソールアプリケーションをコンパイルすると、約1 MBの実行可能ファイルが作成されました。 (これを回避する方法があるかもしれませんが、別のオプションは実行可能な圧縮プログラムです。)

オープンソースのインストーラーに関しては、 Nullsoft Scriptable Install System はスクリプト可能なインストーラーです。興味がある場合は、 ユーザー提供のサンプル があります。これは、JREの存在を検出し、必要なJREがインストールされていない場合に自動的にインストールする方法です。 (お知らせするために、NSISを使用したことがありません。)

NSISを使用してJavaアプリケーションをインストールする方法の詳細については、 my response を参照して、「 What's best way to Javaアプリケーションを配布しますか? "

34
coobird

次のコードでバッチファイルを作ることができます:

start javaw -jar JarFile.jar

.batから.exeへのコンバータを使用して、.batを.exeに変換します。

23
user2675678

私たちは Install4J を使ってwindowsやunix環境用のインストーラを構築しています。

標準的な対話ではできない特別な行動のためのスクリプトを書きたいところまでは簡単にカスタマイズできます。しかし、それを使ってWindowsサービスを設定していても、標準コンポーネントのみを使用しています。

  • インストーラー+ランチャー
  • 窓かunix
  • javaでスクリプト可能
  • アリタスク
  • カスタマイズ可能な多くの標準パネルとアクション
  • オプションでJREを含めるかダウンロードする
  • windowsサービスを起動することもできます
  • 多言語

私はLaunch4Jは同じ会社の出身だと思います(単なるランチャーです - インストーラーはありません)。

シモンズ:残念ながら、私はこの裏書の支払いを受けていません。私はそのツールが好きです。

16
Stroboskop

最新の Java Web Start は、 "ローカルインストール"を可能にするだけでなく、オフラインでの良好な操作を可能にするように拡張されました。調べる価値があります。

編集2018年:Java Web Startはもはや最新のJDKにバンドルされていません。代わりに、Oracleは「同封のJREを使用してアプリケーションをローカルにデプロイする」モデルを推進しています。

私見 JSmooth はかなり良い仕事をしているようです。

9
jussij

アプリケーション全体をネイティブコード、つまりEXEとDLLに変換する必要がある場合は、 ExcelsiorJET があります。私はそれがうまくいっていることがわかり、JREをバンドルする代わりの方法を提供しました。

9
mdma

Launch4jはJavaのソースコード(.Java)を.exeファイルに変換するのに最適なツールです。配布用にjreをバンドルすることも、exeをアイコン化することもできます。アプリケーションのサイズは大きくなりますが、ユーザーにjreがインストールされていなくてもアプリケーションが完全に機能することを確認します。また、ユーザーが個別にインストールしなくても、アプリに必要な特定のjreを提供できることも確認できます。しかし残念ながら、Javaはその重要性を失います。そのマルチプラットフォームのサポートは完全に無視され、最終的なアプリはWindowsでのみサポートされています。しかし、Windowsユーザーだけを対象にしているのであれば、それは大した問題ではありません。

6
Pratanu Mandal

Janel を使用できます。これはアプリケーションランチャーまたはサービスランチャー(4.xから利用可能)として最後に機能します。

5
L. BIZE

あるいは、JavaからCへの変換プログラム( _ jcgo _ など)を使用して、生成されたCファイルをターゲットプラットフォーム用のネイティブバイナリ(.exe)ファイルにコンパイルすることもできます。

4
Ivan Maidanski

私はJavaプログラムを.exeアプリケーションに変換することに反対していることを許すことができ、私には私の理由があります。主なものは、多くのIDEからJavaプログラムをjarファイルにコンパイルできるということです。プログラムが.jar形式の場合、非常に限られた環境でのみ実行される.exeではなく、複数のプラットフォームで実行できます。私は、Javaプログラムが非常に必要でない限り、ExeをExeに変換しないことを考えています。 jarファイルでありながら、Javaプログラムを実行する.batファイルをいつでも書くことができます。

exeに変換することが本当に必要な場合は、Jar2Exeコンバータがそれを黙って行い、メインアプリケーションと一緒にコンパイルされたライブラリを添付することもできます。

jar2exe を使用してjarをexeに変換できます。しかし、あなたはソフトウェアを購入する必要があります。あなたがオープンソースソフトウェアを必要とするなら、私は JSmooth を提案するでしょう。

2
Raghunandan