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