Java ソース コードとは異なるディレクトリからネイティブ ライブラリをロードする、プラットフォームに依存しない Java ステートメントはありますか? 私はこのようなものを使用したいと思います:
public class HelloWorld {
static {
System.loadLibrary("../some_project/HelloWorld");
}
public static native void print();
}
問題は、 System.loadLibrary() がパス名引数でディレクトリ区切り文字をサポートしていないことです。また、残念ながら、 System.load() には絶対パス名が必要です。これは、上記のように相対ディレクトリを指定できないことを意味するだけでなく(これをやりたい)、引数を含める必要もあります。たとえば、前述のLinux システムの JNI ライブラリ名の「lib」および「.so」拡張子。
これに対処する標準的な方法はありますか?可能であれば、正しい JNI ライブラリ名を構築するためだけに、プラットフォームに依存する Java コードを大量に記述することは避けたいと考えています。