2013-09-16 79 views
2

我很久以前在Eclipse中爲Android開發,最近我遇到了一個問題。我創建了一個庫,其中使用了兩個附加的jar庫:appbooster.jaradcolony.jar。之後我加入了創建庫的主要應用,就啓動它說:

E/AndroidRuntime(22887): 
java.lang.NoClassDefFoundError:com.appsfire.appbooster.jar.af_NotificationsManager 
E/AndroidRuntime(22887):at com.testlib.MainActivity.onCreate(MainActivity.java:14) 
... 

我加入了appbooster.jar和adcolony.jar主應用程序太(屬性 - > Java構建路徑 - >庫 - >添加外部JAR)。同樣的結果:

E/AndroidRuntime(26403): FATAL EXCEPTION: main 
E/AndroidRuntime(26403): java.lang.NoClassDefFoundError:com.appsfire.appbooster.jar.af_NotificationsManager 
E/AndroidRuntime(26403):at com.testlib.LibClass.initiateAppBooster(LibClass.java:9) 

然後我去(屬性 - > Java構建路徑 - >在線訂單和出口)從主應用程序,並檢查那些2個jar文件(appbooster和adcolony)。現在它說:

[2013-09-16 16:54:24 - Dex Loader] Unable to execute dex: Multiple dex files define Lorg/OpenUDID/OpenUDID_manager$ValueComparator; 
[2013-09-16 16:54:24 - TestApp] Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define Lorg/OpenUDID/OpenUDID_manager$ValueComparator; 

任何人都可以請幫助我。我一直在研究這個錯誤很長時間。

回答

2

appbooster.jar和adcolony.jar都捆綁了OpenUDID庫。從其中一個庫中刪除這些文件,例如:

zip adcolony.jar -d org/OpenUDID/* 
+0

非常感謝,它的工作,你救了我。正如你所說,我從adcolony.jar中刪除了OpenUDID並且它工作正常。現在這兩個庫都被設置在一個項目中。 – nolanic

0

你把JAR庫放在哪裏?他們應該在你的Android應用程序的libs文件夾下。這似乎是最有可能的,因爲您的Android Java代碼無法讀取那些JAR包中的那些類。所以我肯定會檢查它們是否在你的Android項目中的libs目錄中。請致電article

+0

感謝您的文章,我做了一切,因爲它在那裏說,但它沒用。結果是一樣的。難道這兩個jar文件是互不兼容的嗎?如果我只使用其中一個罐子,該項目工作正常。 (當然在這種情況下,我不能使用另一個的類)。 – nolanic

+0

無法執行dex:多個dex文件定義Lorg/OpenUDID/OpenUDID_manager $ ValueComparator; 轉換爲Dalvik格式失敗:無法執行dex:多個dex文件定義了Lorg/OpenUDID/OpenUDID_manager $ ValueComparator; – nolanic

0

在您的libs文件夾下,檢查是否存在多個相同的.jar文件,即gson-1.0gson-1.0(1)。如果有的話刪除後者。

+0

沒有相同名稱的jar文件。 – nolanic

+0

類似的事情發生在我身上,那就是問題,對不起! – TomSelleck

相關問題