- PR -

WebLogic+JNIでのライブラリ格納ディレクトリ+設定

投稿者投稿内容
Q
会議室デビュー日: 2004/08/04
投稿数: 1
投稿日時: 2004-08-04 16:03
Solaris や RedHat Linux で動いていたソースを GNU/Linux で動かしたところ、
Unsatisfied Link Error が出ました。
原因を調べてみると、System.loadLibrary() を native メソッドが定義されている
クラス以外で行っていたからでした。
クラス毎にライブラリを分けることは通常しないと思いますので、
Java か、OS の不具合かも知れません。
こんな現象が出る環境が他にもあるのでしょうか?
シュン
ぬし
会議室デビュー日: 2004/01/06
投稿数: 328
お住まい・勤務地: 東京都
投稿日時: 2004-08-05 13:03
JDK1.4のソースコードを読んでみたところ、実際のライブラリロード処理以前のチェックの段階でも、さまざまな条件でUnsatisfiedLinkErrorを送出するようです。
そのあたりのチェックをしておくと、問題の切り分け(VMの実装のバグなのか、環境設定のミスなのか)ができてよいのではないでしょうか。

お使いの環境下でデバッガを利用してloadLibrary()呼び出し以降のステップ実行を行い、ClassLoader$NativeLibrary#load()等のnativeメソッド(JDKのバージョン等によっては違うかもしれませんが)呼び出しまでスレッドが到達するか等をチェックしてみると良いかと思いますよ。

JDKのライブラリをデバッガでステップ実行するためは、デバッグバージョンでコンパイルされたrt.jarを利用する必要がありますので、ご注意ください。

スキルアップ/キャリアアップ(JOB@IT)