【问题标题】:Can't run Admob JAR with another JAR无法使用另一个 JAR 运行 Admob JAR
【发布时间】:2011-08-24 13:38:28
【问题描述】:

我正在尝试将外部 JAR 添加到我的项目中,但收到此错误:

--

UNEXPECTED TOP-LEVEL EXCEPTION:
java.lang.IllegalArgumentException: already added: Lorg/codehaus/jackson/Base64Variant;
[2011-08-24 16:35:19 - MyProjApp] Dx at com.android.dx.dex.file.ClassDefsSection.add(ClassDefsSection.java:123)
[2011-08-24 16:35:19 - MyProjApp] Dx at com.android.dx.dex.file.DexFile.add(DexFile.java:143)
[2011-08-24 16:35:19 - MyProjApp] Dx at com.android.dx.command.dexer.Main.processClass(Main.java:372)
[2011-08-24 16:35:19 - MyProjApp] Dx at com.android.dx.command.dexer.Main.processFileBytes(Main.java:346)
[2011-08-24 16:35:19 - MyProjApp] Dx at com.android.dx.command.dexer.Main.access$400(Main.java:59)
[2011-08-24 16:35:19 - MyProjApp] Dx at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:294)
[2011-08-24 16:35:19 - MyProjApp] Dx at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:244)
[2011-08-24 16:35:19 - MyProjApp] Dx at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:130)
[2011-08-24 16:35:19 - MyProjApp] Dx at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:108)
[2011-08-24 16:35:19 - MyProjApp] Dx at com.android.dx.command.dexer.Main.processOne(Main.java:313)
[2011-08-24 16:35:19 - MyProjApp] Dx at com.android.dx.command.dexer.Main.processAllFiles(Main.java:233)
[2011-08-24 16:35:19 - MyProjApp] Dx at com.android.dx.command.dexer.Main.run(Main.java:185)
[2011-08-24 16:35:19 - MyProjApp] Dx at sun.reflect.GeneratedMethodAccessor8.invoke(Unknown Source)
[2011-08-24 16:35:19 - MyProjApp] Dx at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
[2011-08-24 16:35:19 - MyProjApp] Dx at java.lang.reflect.Method.invoke(Unknown Source)
[2011-08-24 16:35:19 - MyProjApp] Dx at com.android.ide.eclipse.adt.internal.build.DexWrapper.run(DexWrapper.java:179)
[2011-08-24 16:35:19 - MyProjApp] Dx at com.android.ide.eclipse.adt.internal.build.BuildHelper.executeDx(BuildHelper.java:652)
[2011-08-24 16:35:19 - MyProjApp] Dx at com.android.ide.eclipse.adt.internal.build.builders.PostCompilerBuilder.build(PostCompilerBuilder.java:510)
[2011-08-24 16:35:19 - MyProjApp] Dx at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:629)
[2011-08-24 16:35:19 - MyProjApp] Dx at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
[2011-08-24 16:35:19 - MyProjApp] Dx at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:172)
[2011-08-24 16:35:19 - MyProjApp] Dx at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:203)
[2011-08-24 16:35:19 - MyProjApp] Dx at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:255)
[2011-08-24 16:35:19 - MyProjApp] Dx at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
[2011-08-24 16:35:19 - MyProjApp] Dx at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:258)
[2011-08-24 16:35:19 - MyProjApp] Dx at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:311)
[2011-08-24 16:35:19 - MyProjApp] Dx at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:343)
[2011-08-24 16:35:19 - MyProjApp] Dx at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:144)
[2011-08-24 16:35:19 - MyProjApp] Dx at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:242)
[2011-08-24 16:35:19 - MyProjApp] Dx at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
[2011-08-24 16:35:19 - MyProjApp] Dx 1 error; aborting
[2011-08-24 16:35:19 - MyProjApp] **Conversion to Dalvik format failed with error 1**

--

我了解我添加的 jar 和库项目(Open-Feint 库)存在冲突。

我的问题是我可以做些什么来解决这个问题?

【问题讨论】:

    标签: android jar openfeint


    【解决方案1】:

    我在使用 OpenFeint 库时遇到了同样的问题,我想通了。

    如果您还将 GameFeed 项目包含在

    项目 > 属性 > Android > 库

    部分,您可能会包含两次 OpenFeint API 源代码,一次在 OpenFeint 库中,一次在 GameFeed 项目中作为依赖库。

    我不得不从 GameFeed 项目中删除 OpenFeint API 源链接,然后一切正常。

    归根结底,你的项目中有两次被构建的部分源代码。

    【讨论】:

      【解决方案2】:

      一个不太好的解决方案是检查双重类文件是否是相同的确切版本,如果是,则从其中一个 jar 中删除它们... 这是一种变通的解决方案,但不是一个非常安全的解决方案...仅在必须时才这样做。

      【讨论】:

      • 我虽然是因为这两个罐子,但我已经删除了 Admob,它仍然会发生。它是与 OpenFeint 库类一起使用的另一家公司的 JAR..
      • 我感觉你的 src 文件夹中有 jar 文件的副本...确保那里没有多余的副本...
      • 不,我仔细检查了它。我还尝试将其作为外部 JAR 加载。
      • 我唯一能看到的是 Openfeint 库项目确实包含他大喊大叫的 jackson/Base64Variant..
      猜你喜欢
      • 2014-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-21
      • 2016-11-06
      • 2018-03-25
      • 1970-01-01
      • 2012-10-17
      相关资源
      最近更新 更多