loadlibrary之后的NoClassDefFoundError

时间:2013-01-18 14:21:43

标签: java android flex loadlibrary

我为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)

如果我在方法初始化中删除loadLibrary(“Native”)调用,我没有错误,一切正常。但是当库成功完成加载并添加(根据logcat)它给了我NoClassDefFoundError

1 个答案:

答案 0 :(得分:0)

根据堆栈跟踪我可以说,它无法找到java.util.UUID类。为了解决此问题,您需要将包含java.util.UUID类的jar文件添加到项目的类路径中。包含java.util.UUID的jar文件是rt.jar。因此,只需将rt.jar添加到类路径中,您的问题就会得到解决。希望它有所帮助。