2013-01-18 56 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添加到構建路徑,但仍然收到相同的錯誤 –