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がないという。
はて、さてどうしたものか。