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

意想不到的顶级异常: java.lang.IllegalArgumentException:已添加:Lorg/xmlpull/v1/XmlPullParser; .... 转换到Dalvik格式失败,错误1

此错误仅在向项目添加特定的外部JAR文件时出现。我花了很长时间寻找可能的解决方案,但没有一个可行。

我甚至尝试将Android 1.6而不是1.5(我目前使用的版本)。


当前回答

我还发现了别的东西。Android使用/libs目录存放JAR文件。我曾多次看到“转换到Dalvik格式失败,错误1”的错误,总是在我的JAR文件中出错时出现。

现在我将Roboguice升级到一个新版本,方法是将新的JAR文件放在/libs目录中,并将类路径切换到新版本。这导致了Dalvik错误。

当我从/libs文件夹中删除一个Roboguice JAR文件时,错误消失了。显然,Android会从/libs中获取所有JAR文件,而不管您在Java构建路径中指定了哪些文件。我不太记得了,但我认为Android从Android 4.0 (Ice Cream Sandwich, ICS)开始默认使用/libs。

其他回答

上面列出的解决方案没有一个对我有效。

这就是我遇到的问题:

I added the jSoup external JAR file to my project's path by first putting it in a source folder called "libs", and then right clicking on it, Build Path -> add to build path. This threw the Dalvik conversion error. It said I had "already included" a class from that JAR file. I looked around the project's directory and found that the place where it was "already included" was in fact the bin directory. I deleted the JAR file from the bin directory and refreshed the project in Eclipse and the error went away!

对于NewRelic用户:

如果你在你的应用程序中集成了newrelic jar,当newrelic版本过期时就会发生这种情况。

解决方案:

更新newrelic jar到最新版本。在eclipse上,只需右键单击项目并更新newrelic。或者你可以直接下载新版本。

以上所有的解决方案都不适合我。我没有使用任何预编译的.jar。我使用的是LVL和Dalvik错误,所有这些都与市场许可库有关。

这个问题通过删除主项目并重新导入(从现有的资源中创建一个新项目)得到了解决。

最好将所有*.jar文件包含在项目文件夹树的“lib”目录中。这样,您就不需要通过转到项目的属性来定义构建路径。"lib"已经是一个构建路径

我还发现了别的东西。Android使用/libs目录存放JAR文件。我曾多次看到“转换到Dalvik格式失败,错误1”的错误,总是在我的JAR文件中出错时出现。

现在我将Roboguice升级到一个新版本,方法是将新的JAR文件放在/libs目录中,并将类路径切换到新版本。这导致了Dalvik错误。

当我从/libs文件夹中删除一个Roboguice JAR文件时,错误消失了。显然,Android会从/libs中获取所有JAR文件,而不管您在Java构建路径中指定了哪些文件。我不太记得了,但我认为Android从Android 4.0 (Ice Cream Sandwich, ICS)开始默认使用/libs。