JarをExeにする

VBAからjarを実行しようとしたら、エラー。ある程度予想していたけど。

じゃあ、仕方ないのでexeにしようと思いつきいろいろ調べた。

  1. Launch4j 2013年に入ってもアップデートがなされている。一番有望と思ったが……
  2. jsmooth 2007年が最終更新と放置気味
  3. exewrap 日本人が開発してる。2011年が最終更新

launch4jを試した所サイドバイサイドでエラーが起きる。VS 2005の再頒布可能パッケージなるものを入れると治るかもしれないし、治らないかもしれない。仮に自分のところでexeを動かすことができたとしても他の人のところで実行するのは無理っぽい。

次にjsmoothを試した。UIには面食らった。以下のように設定する必要がある。

  1. Skelton Selectionでは、Console Wrapperを選択した。(Windowアプリであれば、Windowed Wrapperかも)
  2. Executable Settingでは、Executable Binaryにexeファイル名。Current Directoryにexeを作りたいフォルダを指定。(jarと同じにしておくと手間が省ける)
  3. Application Settingsでは
    1. Main Classにエントリーポイントとなるクラスを入れる。Fat Jarで作ったものでは「com.simontuffs.onejar.Boot」を入れる。
    2. Use an embedded jarにチェックを入れる
    3. Embedded jarにFat Jarで作ったjarファイルの名前を入れる。Current Directoryにあるなら、ファイル名だけで良い。
  4. 保存のボタンを押すと設定ファイルを保存してくれる。次回以降使える。

さて、これを毎回やるのは面倒なのでコマンドラインでやりたいな、と思うはず。これは簡単。jsmoothcmd.exeに、設定ファイルを渡すと自動でexeを作りなおしてくれる。


さらに、Eclipseから離れずにjsmoothを使うには

  1. メニュー→「実行」→「外部ツール」→「外部ツールの構成」を選択
  2. プログラムを選択して、「新規」ボタンを押す。名前はJSmoothGenとか適当に
  3. ロケーションに、jsmoothgen.exeをフルパスで指定する
  4. 作業ディレクトリには、${project_loc}を選択

もう一つ。jsmoothcmdを呼びだしてexeを作成するコマンドを追加。

  1. メニュー→「実行」→「外部ツール」→「外部ツールの構成」を選択
  2. プログラムを選択して、「新規」ボタンを押す。名前はJSmoothCmdとか適当に
  3. ロケーションに、jsmoothcmd.exeをフルパスで指定する
  4. 作業ディレクトリには、${project_loc}を選択
  5. 引数には"${project_loc}\${project_name}.jsmooth"を指定する。

exewrapは試してないのでいずれ。