5

私は3つの異なるJARライブラリを利用するアプリを持っています...それらをa.jar、b.jar、およびc.jarと呼びましょう。これらの各 JARS には、付随するネイティブ C++ 共有オブジェクトがあります。

これで、a.jar と b.jar の両方が c.jar をインポートして使用します。

だから、私の質問は - system.loadLibrary を使用してネイティブ ライブラリをロードするときの最良のアプローチは何ですか? アプリコードからすべてロードできますか、それともそれぞれの JAR でロードする必要がありますか? それぞれの JAR ファイルからロードすると、別のスレッドでロードされますか?

4

1 に答える 1

2

ネイティブ ライブラリをロードするのはクラスの責任です。

すべての jar ファイルには、A、B、および C というクラスもあると仮定しましょう。これらのクラスはすべて、おそらく静的な方法でネイティブ コンパニオンをロードする必要があります。

class A { 
    static { 
        System.loadLibrary(“A”); 
    }

    C c;
} 

class C { 
     static { 
         System.loadLibrary(“C”); 
     }
} 

このような構造では、クラス A にアクセスするときにクラス C をロードして初期化するのはクラス ローダーになります。

于 2012-11-27T08:31:15.400 に答える