0

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が発生します。

4

1 に答える 1

0

スタック トレースによると、java.util.UUID クラスが見つかりません。この問題を解決するには、java.util.UUID クラスを含む jar ファイルをプロジェクトのクラス パスに追加する必要があります。java.util.UUID を含む jar ファイルは rt.jar です。クラスパスに rt.jar を追加するだけで、問題は解決します。それが役に立てば幸い。

于 2013-01-18T14:43:29.053 に答える