这是我的错误:
UNEXPECTED TOP-LEVEL EXCEPTION:
java.lang.IllegalArgumentException: already added: Lorg/codehaus/jackson/Base64Variant;
Conversion to Dalvik format failed with error 1
好吧,5分钟前它起作用了。没有改变任何东西(只是再次启动了 android 模拟器) - 那么现在发生了什么?
多谢你们。
这是我的错误:
UNEXPECTED TOP-LEVEL EXCEPTION:
java.lang.IllegalArgumentException: already added: Lorg/codehaus/jackson/Base64Variant;
Conversion to Dalvik format failed with error 1
好吧,5分钟前它起作用了。没有改变任何东西(只是再次启动了 android 模拟器) - 那么现在发生了什么?
多谢你们。
您的工具链正在调用dx
Jackson JSON 解析器的多个副本。您需要确保您的项目库不包含 Jackson 的两个副本。您可以查看单个 jar 文件是否包含带有jar
and的 Jackson grep
:
jar tvf lib/some-library.jar | grep jackson
由于我正在导入一个外部 jar,我得到了同样的错误。事实证明,外部 jar 对每个类都有重复的条目。解决方案是在 ant 构建文件的jar元素中使用duplicate="preserve"为外部库重新创建 jar文件(我可以访问外部库的完整源代码)。
<jar destfile="${buildlib}/external.jar" manifest="${lib}/external.manifest" basedir="${dest}" duplicate="preserve">
如果您无权访问 ant 构建文件,您可以手动解压缩 jar 文件,删除重复项并再次重新 jar。
我遇到了一个非常相似的问题 Unable to execute dex: Multiple dex files defined Lorg/codehaus/jackson/Base64Variant using Google Drive api's and Google Spreadsheet api's。
尝试了所有常用的 Eclipse 修复方法,清理、重建、启动/停止 Eclipse、新工作区等。
如果您使用的是 Eclipse,这就是我无需管理 .jar 即可解决的方法。
1)在Eclipse中,右键单击您的项目属性
2)点击Java编译器
3) 点击建筑
4) 单击配置工作区设置
5) 单击启用项目特定设置
6)点击输出文件夹
7)点击“重建其他人修改的类文件”
希望这可以帮助。