无法执行dex:多个dex文件定义Lorg / OpenUDID / OpenUDID_manager $ ValueComparator;

时间:2013-09-16 13:59:07

标签: java android eclipse

我在不久前在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构建路径 - >订单和导出)并检查了这两个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;

任何人都可以帮助我。我一直在研究这个错误。

3 个答案:

答案 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.0gson-1.0(1)。如果有,删除后者。