RSS Twitter Facebook

2012/05/08 (2012年05月 のアーカイブ)

exewrapの問題を回避・・・

どうも挙動に良くわからない所があってjar ⇒ exe 変換のexewrap周りをまだ色々つついています。でなんとなくわかってきたのですが、

■ 64bit java と32 bit java の問題
 exewrapはPack200という圧縮を使える時は使うのですが、これが64bit java 環境では動かない。ややこしいのが 64bit java 環境でexewrapを使ってexeを作ると Pack200不使用になるため、

64bit java 環境でexewrapを使う⇒ Pack200不使用⇒ 32 bit java / 64 bit java で動作
32bit java 環境でexewrapを使う⇒ Pack200使用⇒ 32bit javaで動作 / 64bit java で動かない

という関係になっていること。32bit java 環境でこれを回避するには "-t 1.4" オプションでPack200不使用を強制するという方法もある。

■ Pack200使用時、正常にリソースが作られない場合がある。実行しようとすると「クラスローダーが見つかりません」というようなエラーがでてexeのリソースを確認するとPACK_LOADERが入っていない模様。これがいつ起こるのかがいまいちわからない(ビルド番号をインクリメントしていくために前回の出力を読み込んでいるようで、そのあたりが関係しているような気もする)。 しかし、そもそも前述の 64bit javaの問題があるので Pack200不使用で作った方が今のところ安定っぽい。

■ スプラッシュ画面を付ける機能が Pack200不使用の場合、スプラッシュ用のリソースが作られず効かない。取りあえずこれはあきらめれば良いとも言えるが。 (リソースを手作業で追加してやれば動く模様、しかし面倒)

という事で取りあえず 64bit java環境で使うか、-t 1.4 オプションを付ける。スプラッシュはあきらめるか出来たexeをVisualStudioとかで直接編集して"SPLASH_IMAGE"という名前でスプラッシュ画像を追加というのが対策かな。

うーん、フィードバックしとこうかな。気づいてくれるだろうか・・・

Posted by g200kg : 2012/05/08 00:14:06