我在不久前在Eclipse中开发Android版本,最近我遇到了一个问题。我创建了一个库,其中我使用了另外两个jar库:appbooster.jar
和adcolony.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构建路径 - >订单和导出)并检查了这两个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;
任何人都可以帮助我。我一直在研究这个错误。
答案 0 :(得分:2)
appbooster.jar和adcolony.jar捆绑了OpenUDID库。从其中一个库中删除这些文件,例如:
zip adcolony.jar -d org/OpenUDID/*
答案 1 :(得分:0)
你把JAR库放在哪里?它们应位于Android应用程序中的libs
文件夹下。这似乎是最有可能的,因为您的Android Java代码无法读取这些JAR包中的那些类。所以我肯定会检查它们是否实际位于Android项目的libs
目录中。
请参阅以下article。
答案 2 :(得分:0)
在您的libs文件夹下,检查是否存在多个相同的.jar文件,即gson-1.0
和gson-1.0(1)
。如果有,删除后者。