GriffonのJsmoothプラグインで作ったexeが正常に動かない

Griffon

今まで動いていたexeが急に動かなくなってものすごく躓いた。

なぜJavaアプリなのにexeが必要?

お客様とお話ししてはっとした。
展開系のツールがインストールされている場合、実行可能jarファイルをダブルクリックしてもjarが展開されるだけの環境があるとのこと。
だから、jarをexeに変換してリリースして欲しいということだった。

自分のマシン環境

$ uname -vs
Linux #41-Ubuntu SMP Thu Jun 14 17:49:24 UTC 2012
$ java -version
java version "1.7.0_03"
OpenJDK Runtime Environment (IcedTea7 2.1.1pre)(7~u3-2.1.1~pre1-1ubuntu3)
OpenJDK 64-Bit Server VM (build 22.0-b10, mixed mode)
$ griffon
Welcome to Griffon 1.0.0 - http://griffon-framework.org/
Licensed under Apache Standard License 2.0
Griffon home is set to: /opt/griffon
No script name specified. Use 'griffon help'for more info or 'griffonsh' to enter interactive mode
$ pwd
/home/genzou/testapp

exeを作る

プロジェクトディレクトリで以下のコマンドを実行するだけ。

$ griffon install-plugin installer
...
$ griffon prepare-Jsmooth # これは一度だけやらないといけない
...
$ griffon create-jsmooth
...
$ ls dist/jsmooth/
bin
griffon.icns
icons
lib
testapp-windows-0.1.zip
testapp.exe # exeできてる!
testapp.icns
msvcr71.dll

あとは、windows環境でexeを実行するだけ。
ここで問題発生。
一部のWindows環境では動かないと連絡を受けた。

エラー内容

発生しているエラー内容は以下の通り。

testapp.exe – コンポーネントが見つかりません

MSVCR100.dll が見つからなかったため、このアプリケーションを開始できませんでした。アプリケーションをインストールし直すとこの問題は解決される場合があります。

OK

原因

かなり詰まった。
JREのバージョンを 1.6 から 1.7 にアップグレードすると発生するらしい。
確かにjsmoothディレクトリ配下には、msvcr71.dllしかない。

このあたりはjsmoothプラグインではどうにもならないと判断した。

対処法

結局Launch4jをインストールして対処。
以下のコマンドでjarファイルを作ってから、jarをLaunch4jでexe変換して対応した。

$ griffon prod package jar
...
$ ls ./dist/jar/
testapp.jar # こいつをexe変換

Griffon