Android Dex - 添加jackson库后的错误

时间:2014-07-02 08:42:50

标签: android dex

最近我在我的项目中将以下提到的jackson jar添加到libs文件夹中。

1.jackson-annotations-2.2.3.jar
2.jackson-core-2.2.3.jar
3.jackson-databind-2.2.3.jar

在我运行项目时突然遇到错误。

Error:Android Dex: [MyProjectName] Unable to execute DX
Error:Android Dex: [MyProjectName] java.lang.IllegalArgumentException: method ID not in [0, 0xffff]: 65536
Error:Android Dex: [MyProjectName] at com.android.dx.merge.DexMerger$6.updateIndex(DexMerger.java:501)
Error:Android Dex: [MyProjectName] at com.android.dx.merge.DexMerger$IdMerger.mergeSorted(DexMerger.java:276)
Error:Android Dex: [MyProjectName] at com.android.dx.merge.DexMerger.mergeMethodIds(DexMerger.java:490)
Error:Android Dex: [MyProjectName] at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:167)
Error:Android Dex: [MyProjectName] at com.android.dx.merge.DexMerger.merge(DexMerger.java:188)
Error:Android Dex: [MyProjectName] at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:439)
Error:Android Dex: [MyProjectName] at com.android.dx.command.dexer.Main.runMonoDex(Main.java:287)
Error:Android Dex: [MyProjectName] at com.android.dx.command.dexer.Main.run(Main.java:230)
Error:Android Dex: [MyProjectName] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
Error:Android Dex: [MyProjectName] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
Error:Android Dex: [MyProjectName] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
Error:Android Dex: [MyProjectName] at java.lang.reflect.Method.invoke(Method.java:483)
Error:Android Dex: [MyProjectName] at org.jetbrains.android.compiler.tools.AndroidDxRunner.runDex(AndroidDxRunner.java:161)
Error:Android Dex: [MyProjectName] at org.jetbrains.android.compiler.tools.AndroidDxRunner.main(AndroidDxRunner.java:294)
Error:Android Dex: [MyProjectName] at com.intellij.rt.execution.CommandLineWrapper.main(CommandLineWrapper.java:121)

2 个答案:

答案 0 :(得分:1)

看起来与此类似:link

原因是dex文件中的最大方法是65536。

<强> [编辑]

我不确定这是不是一个好主意。我刚读了一篇关于在运行时动态加载jar文件的文章。这样,您必须首先删除一个或两个jar,并确保您的应用程序可以运行。然后,在运行时加载另一个jar。

这里的教程:blog.csdn.net/bboyfeiyu/article/details/11710497

答案 1 :(得分:0)