今まで動いていたexeが急に動かなくなってものすごく躓いた。
なぜJavaアプリなのにexeが必要?
お客様とお話ししてはっとした。
展開系のツールがインストールされている場合、実行可能jarファイルをダブルクリックしてもjarが展開されるだけの環境があるとのこと。
だから、jarをexeに変換してリリースして欲しいということだった。
自分のマシン環境
1
2
3
4
5
6
7
8
9
10
11
12
13
| $ 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を作る
プロジェクトディレクトリで以下のコマンドを実行するだけ。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| $ 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変換して対応した。
1
2
3
4
| $ griffon prod package jar
...
$ ls ./dist/jar/
testapp.jar # こいつをexe変換
|