質問: exewrap / JSmoothについて javaでexeファイルを作成しようと、 これから作ろうとしているものに必要な依存関係をmavenで取り込んで、 maven-assembly-pluginでfat-jarビルドし、 java -jarで実行可能なファイルを作成しました。 今のところHello worldを作っただけですが、mavenで取り込んだ依存ライブラリが重く、 jarファイルが19Mになってしまいました。 その後動作を確認して、exewrapだったりJSmoothなりでラッピングしてみたんですが、 ラッピング実行の際OutOfMemoryが発生して100%落ちます。 そもそもjavaでWindowsアプリケーションを作ろうというのが愚行かもしれませんが、 やはりC++なりなんなりで作るべきでしょうか? 8G中6G与えても足らなかったので、現在のリソースではできないのかなと思いました。 これを試してみたら?というのがあったらおしえてください。
回答: JDK7 update6 以降ならば JDK 自体に javafxpackager (JDK8u20 以降は javapackager) というアプリケーションパッケージングのためのツールがバンドルされており、インストール可能なパッケージをビルドできるようになっています。 (Windows の場合は予め Inno Setup か WiX をインストールしておく必要があります) 名前に JavaFX と入っていますが、どの Java アプリケーションに対してもパッケージングを行うことができます。 以下に詳細な日本語の解説ドキュメントがありますので、参照してください。かなりの分量ですが、1 から 10 章までは目を通しておくことをお勧めします (自己完結型パッケージについては 7 章で解説されています) 。