質問: こんにちは。 Javaの勉強をしている者です。 まだまだ勉強を始めて間もなく、知識が足りなかったり間違っていたり的外れな質問をしていたらすみません。 ### 実現したいこと 私の開発環境と異なる実行環境でも動く自己完結型パッケージを生成したい。 ### 経緯・疑問 開発環境は Windows10(64bit) JDK ver.8.0.1120.15(64bit) NetBeans ver.8.2(64bit) です。 このたび初めて簡単なアプリケーションをつくることができたので、アプリケーションとして配布できる形にしたいと考えています。 できればJREのインストール有無に関係なく実行できるものにしたく、調べた結果解決方法の1つとして自己完結型のアプリケーションにしたら良いということが分かりました。 そのパッケージ化の方法を調べていると、NetBeans公式サイトのネイティブ・パッケージ化のページを読むと、以下のような記載がありました。 ***「生成されるEXEおよびMSIインストーラはプラットフォーム固有で、EXE/MSIインストール可能パッケージが作成されたターゲットJavaプラットフォームと互換性のあるシステムでのみ実行されます。 (たとえば、EXEまたはMSIインストーラが64ビットJDKがインストールされているマシンで作成された場合、64ビットWindowsがインストールされたマシンで実行する必要があります。)」*** 上記はつまり、私の開発環境で生成したパッケージは、同じ環境のパソコン以外では動かないという解釈で宜しいでしょうか。 異なる環境で実行できるようにパッケージ化しようとすると、実行環境と同じ環境を用意して作成しないといけないのでしょうか。 ### 質問 私の開発環境と異なる実行環境でも動く自己完結型アプリケーションを作るにはどうしたら良いでしょうか。 ビルドする際に実行環境に合わせた設定をすれば良いのであれば有難いですし、なにかツールを使って実現できるのであればそれでも助かります。それ以外の解決方法でも是非とも教えて頂きたいです。 どなたかご助力の程、宜しくお願い致します。
回答: Javaなら、gcj というコンパイラがあります。 C/C++みたいにやるようです。 これでコンパイルすると、 使うライブラリ ( system.out.printlnメソッド等があるファイル等 ) をひとつの実行ファイル ( または DLL ) にこめるのです。 なので、サイズが若干大きくなりますが、Windows のビットでは変わらないと思います。 gcj といっても 2種類あるようですが、 gcj +"MinGW" - Google検索 でヒットするページ MinGW/GCJを使ってみる 等を参考にしてみてください。 exeファイルは 「実行ファイル」といわれます。 なので、私は「Java 実行ファイル 変換」のようにしてたどり着きました。