ゲンゾウ用ポストイット

Java、Groovy、Linux関連の備忘録

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

今まで動いていた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変換