- PR -

ExcelsiorのJetPackで作ったファイルの実行時エラー(MessageDigest)

1
投稿者投稿内容
まこと
会議室デビュー日: 2003/11/06
投稿数: 14
投稿日時: 2003-11-06 16:54
最近Excelsiorを使って、JavaのSwingを使ったアプリケーションで
JREを含めたインストール用プログラムを作り、別マシンにインストール
してテストしたのですが、MessageDigestのgetInstance("MD5")のところで
NoSuchAlgorithmExceptionで落ちてしまいます。
ちなみにJREはProgram Files\Javaにあるj2re1.4.1_02です。
上記JREではMessageDigestクラスは使えないということなんでしょうか?
元のj2sdk1.4.1_02上では動いていました。
unibon
ぬし
会議室デビュー日: 2002/08/22
投稿数: 1532
お住まい・勤務地: 美人谷        良回答(20pt)
投稿日時: 2003-11-11 00:20
unibon です。こんにちわ。

引用:

まことさんの書き込み (2003-11-06 16:54) より:
最近Excelsiorを使って、JavaのSwingを使ったアプリケーションで
JREを含めたインストール用プログラムを作り、別マシンにインストール
してテストしたのですが、MessageDigestのgetInstance("MD5")のところで
NoSuchAlgorithmExceptionで落ちてしまいます。


#遅い回答ですが。
API の内部のどこかで Class.forName 相当のことをやっているのだと思いますが、
Excelsior JET のようなEXE 化やあるいはオブファスケータの類のツールでは、
一般にこのような動的なロードのためには、
ツールに対して事前になにか設定が必要なはずだと思います。
このためには、事前に MD5 を getInstance してみて、
使っている実行時のクラスを調べてみる必要があるのかもしれません。
ただ、面倒そうですね。
まこと
会議室デビュー日: 2003/11/06
投稿数: 14
投稿日時: 2003-11-12 11:24
unibonさん、情報ありがとうございました。
MessageDigestのgetInstanceのところでクラスの動的なロードが
あるらしいとの情報を教えていただき、何か設定などないか探したところ
コンパイルオプションの「存在しないクラスの結果」が
コンパイルエラー
ランタイムエラー
ダイナミックコンパイレーション
の選択がありまして、元々コンパイル時にはエラーはないので
デフォルトの「コンパイルエラー」のままにしていたのですが、これを
「ダイナミックコンパイレーション」に変更してexeを作ったところ
実行時エラーで落ちなくなりました。

ただ、この機能はExcelsior JETプロフェッショナルにしかないもののようです。
今はテスト版を使ってまして、製品版は 17万5千円〜
らしいので、実際これを使うかどうかはちょっと考えてみます。
MD5の計算ルーチンを自前で用意すれば、動的ロードの必要はないんでしょうけど...

いずれにせよ、一応問題は解決しました。どうもありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)