2009-08-03 55 views
3

私はJARファイルを使用しています。これはJavaライブラリ(JHDF5)を使用しています。私はMATLABで私自身のJARファイルを使用して、デバッグしながら、それを再構築する必要があるとき、私はclear javaを呼び出して、私のJARファイルから新しいオブジェクトを作成した後、再びそれを使用しようとすると、私はこのエラーを取得する:java.lang.UnsatisfiedLinkError:ネイティブライブラリ{____。dll}がすでに別のクラスローダーにロードされています

java.lang.UnsatisfiedLinkError: 
Native Library C:\deka\proj\java\ESPDF\dist\lib\jhdf5.dll 
already loaded in another classloader 

と私はそれを解決することはできませんMATLABをシャットダウンし、再開、首の痛みです。

このエラーは何ですか?そのエラーは何ですか? (私のMATLABの?JHDF5は、DLLを解放していないか、既にロードされているかどうかをチェックしていません)

+0

私の場合、再起動後も解決していません –

答えて

5

一般に、JavaコードがネイティブDLLをアンロードする方法はありません。 DLLがロードされると、それはJVMとVMの存続期間があります、ということを考えると http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5075039

は、それが一度だけロードされていることを確認します。

責任の問題に答えるために、私はそれが既に利用可能であるかどうかチェックせずにdllをロードしようとするコードの誤りだと考えます。

+1

再:責任:良い、私はHDF5を変更することができます(または少なくともそれを自分自身で再構築することはMatlabよりも簡単です)。 –

+1

これはおそらくMatlabがロードしていないか、再構築後に初めてではなく、初めてエラーが発生すると思います。文書化されていない "feature dumpmem" Matlabコマンドを使用して、MatlabがロードしたDLLのリストを取得することができます。 –

関連する問題