Flexのネイティブ拡張機能を作成しました。これは正常に機能します。FlexからJava関数を呼び出すと、目的の結果が得られます。しかし、Javaで共有ライブラリをロードしたい場合、アプリケーションは起動時にクラッシュします。
ライブラリをロードするためのコード:
public static void loadLibrary(String sLibName) {
try {
System.loadLibrary(sLibName);
} catch(UnsatisfiedLinkError e) {
(...)
@Override
public void initialize() {
// called when the native extension is ready to be used
Debug.info("Extension initialized");
loadLibrary("Native");
Logcatは、次のログレポートを提供します。
01-18 15:14:25.824: I/ColijnIT-AR(15349): Extension initialized
01-18 15:14:25.824: D/dalvikvm(15349): Trying to load lib /data/data/air.NativeJavaTest.debug/lib/libNative.so 0x41312378
01-18 15:14:25.834: D/dalvikvm(15349): Added shared lib /data/data/air.NativeJavaTest.debug/lib/libNative.so 0x41312378
01-18 15:14:25.834: W/System.err(15349): java.lang.NoClassDefFoundError: java/util/UUID
01-18 15:14:25.834: W/System.err(15349): at java.lang.Runtime.nativeLoad(Native Method)
01-18 15:14:25.834: W/System.err(15349): at java.lang.Runtime.loadLibrary(Runtime.java:368)
01-18 15:14:25.834: W/System.err(15349): at java.lang.System.loadLibrary(System.java:535)
メソッドinitializeでloadLibrary( "Native")呼び出しを削除すると、エラーは発生せず、すべてが正常に機能します。しかし、ライブラリのロードが正常に完了し、追加されると(logcatによると)、NoClassDefFoundErrorが発生します。