协慌网

登录 贡献 社区

“在外部 JAR 上转换为 Dalvik 格式失败,错误为 1”

在我在 Eclipse 中的 Android 应用程序中,我收到以下错误。

意外的顶级例外情况:
java.lang.IllegalArgumentException:已添加:Lorg / xmlpull / v1 / XmlPullParser;
....
转换为 Dalvik 格式失败,错误 1

仅当我将特定外部 JAR 文件添加到项目时才会出现此错误。我搜索了很长时间以寻找可能的解决方案,但没有一种可行的解决方案可行。我甚至尝试更改为 Android 1.6 而不是 1.5(我使用的当前版本)。

答案

转到项目 » 属性 »Java 构建路径 » 库并删除除 “Android XY” 之外的所有内容(在我的案例中为 Android 1.5)。单击确定。转到项目 » 清洁 » 清除下面选择的项目 » 选择项目,然后单击 “确定”。这应该工作。

您可能还有一个位于项目文件夹中某处的 JAR 文件(我已将 Admob JAR 文件复制到我的 src 文件夹中),然后将其添加为 Java Path Library。它没有显示在 Package Explorer 下,所以你没有注意到它,但它确实被计算了两次,导致可怕的 Dalvik 错误 1。

另一个可能的原因可能是包名冲突。假设你在这个包中有一个包com.abc.xyz和一个名为A.java的类,以及另一个包含相同com.abc.xyz.A.java库项目(添加到该项目的依赖项中),那么你将得到完全相同的错误。这意味着,您有多个对同一文件A.java引用,无法正确构建它。

在其他方面,如果您不小心或故意在手动编辑 / 添加类路径文件中的任何内容,可能会发生这种情况。在某些情况下,我们可能会手动将 android.jar 路径添加到类路径文件中以生成 java doc.On 在生成 javadoc 后删除它代码将工作正常。如果仍然出现任何一个,请检查这一点。

我解决了这个问题。

这是一个 JAR 文件冲突。

似乎我的 buildpath 上有两个包含相同包和类的 JAR 文件。

smack.jarandroid_maps_lib-1.0.2

从其中一个 JAR 文件中删除此包解决了该问题。

Windows 7 解决方案:

确认问题是由文件中的 ProGuard 命令行引起的
[Android SDK 安装目录] \ tools \ proguard \ bin \ proguard.bat

编辑以下行将解决问题:

call %java_exe% -jar "%PROGUARD_HOME%"\lib\proguard.jar %*

call %java_exe% -jar "%PROGUARD_HOME%"\lib\proguard.jar %1 %2 %3 %4 %5 %6 %7 %8 %9