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)

然后我从主应用程序转到(Properties-->Java Build Path-->Order and Export)并检查了这两个 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;

任何人都可以帮助我。我已经解决这个错误很长时间了。

4

3 回答 3

2

appbooster.jar 和 adcolony.jar 都捆绑了 OpenUDID 库。从其中一个库中删除这些文件,例如:

zip adcolony.jar -d org/OpenUDID/*
于 2013-09-24T22:33:00.253 回答
0

你把 JAR 库放在哪里了?它们应该libs在您的 Android 应用程序中的文件夹下。这似乎是最有可能的,因为您的 Android Java 代码无法读取这些 JAR 包中的类。所以我肯定会检查它们是否真的在libs你的 Android 项目的目录中。

请参阅以下文章

于 2013-09-16T14:04:50.003 回答
0

在您的 libs 文件夹下,检查是否有多个相同的 .jar 文件,即 .jar 文件gson-1.0和.jar 文件gson-1.0(1)。如果有,删除后者。

于 2013-09-16T14:25:22.320 回答