Android 构建失败 - java.lang.IllegalArgumentException:已添加:Lcom/google/api/client/escape/CharEscapers;

Posted

技术标签:

【中文标题】Android 构建失败 - java.lang.IllegalArgumentException:已添加:Lcom/google/api/client/escape/CharEscapers;【英文标题】:Android Build fail - java.lang.IllegalArgumentException: already added: Lcom/google/api/client/escape/CharEscapers; 【发布时间】:2012-01-16 06:59:27 【问题描述】:

我只是为我的 android 应用程序准备了小更新,但是当我尝试构建我的应用程序(在调试模式下)时,我遇到了这个奇怪的错误。如果更聪明的人可以查看此内容以找出可能出现的问题,那就太好了。我正在清理/重建/修复项目属性,但没有结果。我不知道发生了什么:(。也许这里的任何人都会发生类似的事情? 如果这可以帮助我使用以下库:adMob(4.1.1)、openfeint 和 libgdx。

这里是构建日志:

UNEXPECTED TOP-LEVEL EXCEPTION:
java.lang.IllegalArgumentException: already added: Lcom/google/api/client/escape/CharEscapers;
[2011-12-08 21:56:42 - JellyBallsFree] Dx   at com.android.dx.dex.file.ClassDefsSection.add(ClassDefsSection.java:123)
[2011-12-08 21:56:42 - JellyBallsFree] Dx   at com.android.dx.dex.file.DexFile.add(DexFile.java:163)
[2011-12-08 21:56:42 - JellyBallsFree] Dx   at com.android.dx.command.dexer.Main.processClass(Main.java:486)
[2011-12-08 21:56:42 - JellyBallsFree] Dx   at com.android.dx.command.dexer.Main.processFileBytes(Main.java:455)
[2011-12-08 21:56:42 - JellyBallsFree] Dx   at com.android.dx.command.dexer.Main.access$400(Main.java:67)
[2011-12-08 21:56:42 - JellyBallsFree] Dx   at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:394)
[2011-12-08 21:56:42 - JellyBallsFree] Dx   at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:245)
[2011-12-08 21:56:42 - JellyBallsFree] Dx   at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:131)
[2011-12-08 21:56:42 - JellyBallsFree] Dx   at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:109)
[2011-12-08 21:56:42 - JellyBallsFree] Dx   at com.android.dx.command.dexer.Main.processOne(Main.java:418)
[2011-12-08 21:56:42 - JellyBallsFree] Dx   at com.android.dx.command.dexer.Main.processAllFiles(Main.java:329)
[2011-12-08 21:56:42 - JellyBallsFree] Dx   at com.android.dx.command.dexer.Main.run(Main.java:206)
[2011-12-08 21:56:42 - JellyBallsFree] Dx   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[2011-12-08 21:56:42 - JellyBallsFree] Dx   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
[2011-12-08 21:56:42 - JellyBallsFree] Dx   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[2011-12-08 21:56:42 - JellyBallsFree] Dx   at java.lang.reflect.Method.invoke(Method.java:616)
[2011-12-08 21:56:42 - JellyBallsFree] Dx   at com.android.ide.eclipse.adt.internal.build.DexWrapper.run(DexWrapper.java:179)
[2011-12-08 21:56:42 - JellyBallsFree] Dx   at com.android.ide.eclipse.adt.internal.build.BuildHelper.executeDx(BuildHelper.java:745)
[2011-12-08 21:56:42 - JellyBallsFree] Dx   at com.android.ide.eclipse.adt.internal.build.builders.PostCompilerBuilder.build(PostCompilerBuilder.java:647)
[2011-12-08 21:56:42 - JellyBallsFree] Dx   at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:629)
[2011-12-08 21:56:42 - JellyBallsFree] Dx   at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
[2011-12-08 21:56:42 - JellyBallsFree] Dx   at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:172)
[2011-12-08 21:56:42 - JellyBallsFree] Dx   at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:282)
[2011-12-08 21:56:42 - JellyBallsFree] Dx   at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:363)
[2011-12-08 21:56:42 - JellyBallsFree] Dx   at org.eclipse.core.internal.resources.Project$1.run(Project.java:545)
[2011-12-08 21:56:42 - JellyBallsFree] Dx   at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1975)
[2011-12-08 21:56:42 - JellyBallsFree] Dx   at org.eclipse.core.internal.resources.Project.internalBuild(Project.java:524)
[2011-12-08 21:56:42 - JellyBallsFree] Dx   at org.eclipse.core.internal.resources.Project.build(Project.java:123)
[2011-12-08 21:56:42 - JellyBallsFree] Dx   at com.android.ide.eclipse.adt.internal.project.ProjectHelper.build(ProjectHelper.java:869)
[2011-12-08 21:56:42 - JellyBallsFree] Dx   at com.android.ide.eclipse.adt.internal.launch.LaunchConfigDelegate.launch(LaunchConfigDelegate.java:146)
[2011-12-08 21:56:42 - JellyBallsFree] Dx   at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:853)
[2011-12-08 21:56:42 - JellyBallsFree] Dx   at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:702)
[2011-12-08 21:56:42 - JellyBallsFree] Dx   at org.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch(DebugUIPlugin.java:924)
[2011-12-08 21:56:42 - JellyBallsFree] Dx   at org.eclipse.debug.internal.ui.DebugUIPlugin$8.run(DebugUIPlugin.java:1128)
[2011-12-08 21:56:42 - JellyBallsFree] Dx   at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
[2011-12-08 21:56:42 - JellyBallsFree] Dx 1 error; aborting
[2011-12-08 21:56:42 - JellyBallsFree] Conversion to Dalvik format failed with error 1

【问题讨论】:

伙计们,你能在 *** 上用英文吗? 您是否在为您的项目使用 Gradle 构建?我对重复的 jar 文件(远程和本地)有类似的问题...... 当一个 .class 文件以某种方式落在我的一个 src 目录下时(我使用 Ant 和 Eclipse,所以它是其中之一或我),我看到了这个错误。绝望中,我做了一个git clean -dfx(除非你知道其中的含义,否则不要复制和粘贴),然后看到错误的类文件被冲洗掉了。 【参考方案1】:

您有两次包含相同的 jar 库。检查您的应用程序和所有引用的 Android 库,并确保您将所有 jar 包都包含一次。

如果这没有帮助,请查看http://tools.android.com/knownissues。具体看构建系统部分中描述的第一个问题。

您也可以阅读这篇文章:How to fix the “Conversion to Dalvik format failed with error 1"

【讨论】:

感谢您提供的线索。我仔细检查了所有内容,并添加了两次开放假动作。第一个作为源文件,第二个作为 jar 库。不知道为什么它在过去几个月中构建得很好,但是我有可能在上次构建和现在之间更新 adt(不完全确定)。无论如何,再次感谢(也提供其他链接):)【参考方案2】:

升级到 R17 后出现此错误。

我的原因不同(即不是 R15 中发生的 *_src 问题)。我的“libs”文件夹中有两个不同版本的库。现在看来,Android 插件会自动将“libs”中的任何 jars 添加到 Package Explorer 的“Android Dependencies”部分。删除旧 jar 解决了问题。

【讨论】:

【参考方案3】:

我有同样的问题,这里是解决方案:

转到顶部的“构建”和“清理项目”,然后在“重建项目”之后它对我有帮助!您也可以转到“文件”和“无效缓存”并重新启动 Android Studio

当然,请确保清单没问题,并且没有重复包含!

【讨论】:

【参考方案4】:

对于 SDK 更新到 r17 后出现的错误,您可以查看以下内容: http://tools.android.com/recent/dealingwithdependenciesinandroidprojects

【讨论】:

谢谢!我怎样才能更新你 10 次? eclipse 报告错误而不说到底发生了什么,这真的很烦人!【参考方案5】:

检查重复的 jar 文件。 检查 project.properties 中的 lib 条目。 清理所有包含的库并从头开始构建。

【讨论】:

【参考方案6】:

当我添加 android Ocr Api (tess-two) 并导入使用此 API 的示例应用程序时遇到了同样的问题,但是示例应用程序和 tess-two api 具有相同的包,这就是我面临这个问题的原因,所以我删除了重复的我的示例应用程序中的软件包,它工作正常。

【讨论】:

【参考方案7】:

我遇到了同样的问题。就我而言,我的 libs 文件夹中有 2 个 jar,比如说 A 和 B。A 是我创建的自定义 jar,并且已经包含了 B。在我更新到 R17 之前,这不是问题。 解决方案:我从库中删除了 B。

【讨论】:

【参考方案8】:

在 google_play_services/samples 中有一个地图项目。将 jar 从 libproject 安装到 maven 存储库,将依赖项添加到 maps 项目并发现该错误。在依赖部分使用提供的范围可以解决问题。

【讨论】:

以上是关于Android 构建失败 - java.lang.IllegalArgumentException:已添加:Lcom/google/api/client/escape/CharEscapers;的主要内容,如果未能解决你的问题,请参考以下文章

java.lang.UnsatisfiedLinkError:dlopen 失败:找不到库

谷歌地图 api 构建失败

Android 媒体录制:java.lang.RuntimeException:启动失败

java.lang.NoClassDefFoundError:解析失败解析失败:Lcom/google/android/gms/common/internal/zzab;

Java 构建开始失败 - 致命错误编译:java.lang.IllegalAccessError: class lombok.javac.apt.LombokProcessor

Android Espresso UI 测试 - 测试运行失败:仪器运行因“java.lang.IllegalAccessError”而失败