Native Libraryのエラー

  • nativeメソッドmethodAを持つクラスClassA
  • ClassA#methodA() 対応したnative libraryの名前は nativeLib
  • native libraryのロードは、ClassAのメソッド init() 内で System.loadLibrary("nativeLib") で行う。
ClassA objA = new CLassA();
try {
    objA.init();
} catch (Throwable t) {
    log("error#1", t);
}
try {
    objA.methodA();
} catch (Throwable t) {
    log("error#2", t);
}

このコードを持つ部分がTomcat上のWeb application内に存在し、deploy直後の実行では問題なし。
TomcatManagerで停止し、起動するとこのコードは error#1 で失敗する。

理由は、http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=26604&forum=12&5 参照。

ということで、

ClassA objA = new CLassA();
try {
    objA.init();
} catch (Throwable t) {
    if ( already loaded でないときは) {
        log("error#1", t);
    }
}
try {
    objA.methodA();
} catch (Throwable t) {
    log("error#2", t);
}

とすると、今度は error#2 で失敗。nativeLibがないという。
はて、さてどうしたものか。