2013-01-18 57 views
0

我为Flex制作了一个原生的扩展,它工作正常。当从Flex调用Java函数时,我会得到期望的结果。但是,如果我想用Java加载共享库,那么应用程序在启动时会崩溃。loadlibrary之后的NoClassDefFoundError

用于加载库的代码:

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(“本地”)在方法调用初始化我得到没有错误,一切正常。但是,当库成功完成加载并添加(根据logcat)它给了我NoClassDefFoundError

+0

http://javarevisited.blogspot.in/2011/06/noclassdeffounderror-exception-in.html如何在Java解决方案中解决java.lang.NoClassDefFoundError:java.lang.NoClassDefFoundError NoClassDefFoundError的明显原因是特定的类在Classpath中不可用,所以我们需要将它添加到Classpath中,或者我们需要检查为什么它在Classpath中不可用,如果我们期待它。可能有以下几个原因:1.该类在Java Classpath中不可用。 2.您可能正在使用jar命令运行您的程序,并且该类未在清单文件的 – 2013-01-18 17:05:36

回答

0

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

+0

中定义嗯我尝试将rt.jar添加到构建路径,但仍然收到相同的错误 –