1

C で記述されたレガシー コードに依存する Java アプリケーションがあり、JNI 経由でアクセスします。ネイティブ ライブラリはサブディレクトリに保存されます (実際には、32 ビット ライブラリと 64 ビット ライブラリの 2 つのサブディレクトリがあります)。

Windows では、次のコマンド ライン形式が正常に機能します。

java -Djava.library.path=nativelib64 -classpath myapp.jar;jni_lib.jar MyApplication

しかし、AIX と Linux で同等のもの (基本的にはクラスパスのセミコロンをコロンに置き換えたもの) は UnsatisfiedLinkErrors で失敗しています - 私が試したことがないので、呼び出しの前に LIBPATH または LD_LIBRARY_PATH を明示的に設定する必要があります。 -Djava.library.path を (例: "nativelib64", "./nativelib64", "/full/path/to/myappdir/nativelib64") に設定するとうまくいくようです。

JVM の UNIX バージョンは、コマンドラインからの java.library.path プロパティの設定をサポートしていませんか?

4

2 に答える 2

4

http://kalblogs.blogspot.co.uk/2009/01/java.htmlを参照してください。

java.library.pathは、コードにロードしている直接のネイティブ ライブラリを解決するためにのみ機能します。

この即時ライブラリが他のライブラリに依存している場合 ( で定義されているのと同じパス内java.library.pathまたは別の場所にある)、これらの他のライブラリは OS の標準メカニズムを介してロードされます。この場合も、それに応じた設定が必要LD_LIBRARY_PATHです。

于 2013-04-19T11:58:16.723 に答える