2017-12-08 19 views
0

私は、同じネイティブライブラリの異なるバージョンを持つを持つ2つのモジュールを持つNetBeansプラットフォームアプリケーションを持っています。NetBeansでネイティブDLLのカスタムパスを提供

各モジュールの下にあるrelease/module/libフォルダ内にネイティブライブラリを追加しました。 は[http://wiki.netbeans.org/DevFaqWrapperModulesセクションごとに:?どのように私は自分のライブラリラッパーモジュール内のネイティブライブラリ(の.soまたはの.dll)が含まれない]

しかし、問題は、ネイティブライブラリがあるアプリケーションの最終ビルド生成中です\ cluster \ modules \ libフォルダにコピーされます。すなわち、両方のバージョンが同じ名前を持つので、私のネイティブライブラリの1つのバージョンだけがlibフォルダ内に存在します。今すぐ私の質問はNetBeansで、jar(バージョン1)はネイティブlib(バージョン1)を、jar(バージョン2)はネイティブlib(バージョン2)を参照する必要があることを具体的に述べることができます。完全なパスを提供することにより、

1)ファイルをロードします:

答えて

1

次の2つの方法でネイティブライブラリファイル(.dllファイル/ Windowsまたは.soの/ Linux)をロードすることができ

System.load("my/full/path/native.dll"); 

2)あなたのネイティブファイルは、Javaのライブラリパスの内側に配置されている場合:

System.loadLibrary("native"); 

は、第二のケースでは、あなただけ(拡張子なし)あなたのネイティブファイルの名前を提供する必要があることがわかります。

デフォルトのJavaライブラリパスはOSに依存します:

Windowsでは

、それはLinuxのPATH
にマップする、それはOS X上で
をLD_LIBRARY_PATHにマッピングし、それが

た場合をDYLD_LIBRARY_PATHにマッピング独自のJavaライブラリパスを設定する:

try { 
     System.setProperty("java.library.path","YOUR/PATH"); 
     Field fieldSysPath = ClassLoader.class.getDeclaredField("sys_paths"); 
     fieldSysPath.setAccessible(true); 
     fieldSysPath.set(null, null); 
    } catch (Exception ex) { 
     System.out.println("Failed to set Java Library Path: " + ex.getMessage); 
    } 
関連する問題