2009-07-16 29 views
11
Javaプログラムでは、私はdllにjni呼び出しを行い、起動時に次のようにライブラリをロードします。 次に、同じライブラリをロードする別のクラスを実装し、ライブラリライブラリがすでに実行されているかどうかを確認する方法はありますか? ありがとう、 -Pete

答えて

0

どのような?それが例外であれば、それを捕まえることができますか?

もう1つの方法は、ライブラリをロードする役割を果たすクラスを1つだけ作成することです。あなたは、クラスの静的初期化子のライブラリ部分をロードしてから、クラスをロードして==ライブラリをロードすることができます。

EDIT:javadocs for Runtime.loadLibrary()System.loadLibraryコールが)も静的初期アプローチを示唆している:

ネイティブメソッドは、クラスの実装で使用される場合、 標準戦略はネイティブを置くことである クラス宣言内

 static { System.loadLibrary("LibFile"); } 

:静的 初期化子を入れてライブラリファイル内のコード( LIBFILEそれを呼び出す)してから。クラスが読み込まれて初期化されると、 ネイティブコード のネイティブメソッド が実装されます。

のjavadocも言う:

この方法は、より多くの同じライブラリ名を持つ回以上呼び出された場合は、2番目以降の呼び出しは無視されます。

これは、私があなたが得ているエラーについてさらに興味をそそられます。

+2

二つの異なるクラスローダーが同じネイティブライブラリに問題http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=へ – jitter

+1

いくつかの関連リンクをロードしようとするので、私は彼がUnsatisfiedLinkErrorをを取得すると思います4750956とhttp://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5075039 – jitter

+0

ええジッタが正しいです、それは私が得ているエラーです。リンクジッタのおかげです。 –

関連する問題