【问题标题】:Error while importing jar into an android project将jar导入android项目时出错
【发布时间】:2014-01-12 10:25:59
【问题描述】:

将 apache xerces.jar 放入构建路径时出现以下错误..

我之前已经搜索过错误.. 所描述的解决方案是针对冲突的 jar .. 但这里不是这种情况.. 由于 utf-8 错误,我收到了一些 ParserException

我试过了(但没有运气):

  • 清理项目
  • 重启eclipse
  • 更新 adt、sdk
  • 删除所有库并修复项目属性,然后导入 解决冲突的措施
  • 另外我只有 1 个外部库 xerces

来自here的解决方案

删除 xerces 运行项目

几个月前,我通过构建路径正常导入了 xerces,它已经工作了。 任何帮助表示赞赏!

[2013-12-24 12:21:44 - 试用] Dx 意外顶级异常: com.android.dx.cf.iface.ParseException:偏移处的坏 utf-8 字节 a0 00000004 在 com.android.dx.cf.cst.ConstantPoolParser.parseUtf8(ConstantPoolParser.java:374) 在 com.android.dx.cf.cst.ConstantPoolParser.parse0(ConstantPoolParser.java:262) 在 com.android.dx.cf.cst.ConstantPoolParser.parse0(ConstantPoolParser.java:294) 在 com.android.dx.cf.cst.ConstantPoolParser.parse(ConstantPoolParser.java:150) 在 com.android.dx.cf.cst.ConstantPoolParser.parseIfNecessary(ConstantPoolParser.java:124) 在 com.android.dx.cf.cst.ConstantPoolParser.getPool(ConstantPoolParser.java:115) 在 com.android.dx.cf.direct.DirectClassFile.parse0(DirectClassFile.java:482) 在 com.android.dx.cf.direct.DirectClassFile.parse(DirectClassFile.java:406) 在 com.android.dx.cf.direct.DirectClassFile.parseToInterfacesIfNecessary(DirectClassFile.java:388) 在 com.android.dx.cf.direct.DirectClassFile.getMagic(DirectClassFile.java:251) 在 com.android.dx.command.dexer.Main.processClass(Main.java:665) 在 com.android.dx.command.dexer.Main.processFileBytes(Main.java:634) 在 com.android.dx.command.dexer.Main.access$600(Main.java:78) 在 com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:572) 在 com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:284) 在 com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:166) 在 com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144) 在 com.android.dx.command.dexer.Main.processOne(Main.java:596) 在 com.android.dx.command.dexer.Main.processAllFiles(Main.java:498) 在 com.android.dx.command.dexer.Main.runMonoDex(Main.java:264) 在 com.android.dx.command.dexer.Main.run(Main.java:230) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(未知来源)在 java.lang.reflect.Method.invoke(未知来源)在 com.android.ide.eclipse.adt.internal.build.DexWrapper.run(DexWrapper.java:187) 在 com.android.ide.eclipse.adt.internal.build.BuildHelper.executeDx(BuildHelper.java:786) 在 com.android.ide.eclipse.adt.internal.build.builders.PostCompilerBuilder.build(PostCompilerBuilder.java:597) 在 org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:733) 在 org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) 在 org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:206) 在 org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:328) 在 org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:403) 在 org.eclipse.core.internal.resources.Project$1.run(Project.java:618) 在 org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2345) 在 org.eclipse.core.internal.resources.Project.internalBuild(Project.java:597) 在 org.eclipse.core.internal.resources.Project.build(Project.java:124) 在 com.android.ide.eclipse.adt.internal.project.ProjectHelper.doFullIncrementalDebugBuild(ProjectHelper.java:1116) 在 com.android.ide.eclipse.adt.internal.launch.LaunchConfigDelegate.launch(LaunchConfigDelegate.java:147) 在 org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:858) 在 org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:707) 在 org.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch(DebugUIPlugin.java:1018) 在 org.eclipse.debug.internal.ui.DebugUIPlugin$8.run(DebugUIPlugin.java:1222) 在 org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) 引起 作者:java.lang.IllegalArgumentException:偏移处的 utf-8 字节 a0 错误 00000004 在 com.android.dx.rop.cst.CstString.throwBadUtf8(CstString.java:171) 在 com.android.dx.rop.cst.CstString.utf8BytesToString(CstString.java:143) 在 com.android.dx.rop.cst.CstString.(CstString.java:200) 在 com.android.dx.cf.cst.ConstantPoolParser.parseUtf8(ConstantPoolParser.java:371) ... 43 更多 ...同时在偏移量 00000afe 处解析 cst 012c ...同时 在偏移量 00000316 处解析 cst 00a5 ...解析时 > org/apache/xerces/impl/xpath/regex/ParserForXMLSchema.class

> [2013-12-24 12:21:44 - 试用] Dx 1 错误;流产 [2013-12-24 12:21:44 - 试用] 转换为 Dalvik 格式失败,出现错误 1

【问题讨论】:

    标签: java android eclipse jar


    【解决方案1】:

    在您的问题中,您提到:

    几个月前,我通过构建路径正常导入了 xerces,它已经工作了

    这对我来说是一个危险信号,因为对于不断更新的库来说,“几个月”可能是一生。也许您的问题不在于 jar 文件与 Eclipse 的兼容性,而是 jar 文件本身的问题,这可以用“错误的 UTF-8 字节”解释您的解析器错误。

    根据 Apache (http://xerces.apache.org/xerces2-j/install.html),事实证明 xerces.jar 现在已弃用:

    xerces.jar 在主发行版中不再可用。您仍然可以从已弃用的发行版中下载此 jar。 xerces.jar 是一个 Jar 文件,其中包含所有解析器类文件(即,它包含 xercesImpl.jar 和 xml-apis.jar 内容的交集)。

    因此,在上面列出的同一页面上,我发现您只需将 xerces.jar 替换为两个新文件:xercesImpl.jarxml-apis.jar强>。请参阅下面的摘录(来自与上面相同的链接):

    Xerces jar 文件的变化

    为了适应 Xerces 与 XSLT 处理器(例如 Xalan)一起使用的非常常见的情况,在 Xerces 2.0.0 beta 3 和 beta 4 之间,引入了 Xerces jar 文件的默认组织的更改。除了我们仍在生成的 xercesSamples.jar 文件之外,Xerces 之前还附带了一个名为 xerces.jar 的文件。该文件包含解析器的所有功能。 现在包含两个文件:xercesImpl.jar,我们对各种 API 的实现,以及 xml-apis.jar,API 本身。这样做是为了,如果您的 XSLT 处理器附带的 API 与 Xerces-J 支持的 API 级别相同,则可以避免将 xml-apis.jar 放在类路径中。

    如果您仍想/需要使用 xerces.jar,Apache 提供了一种向后兼容的方法:

    如果您希望改用 xerces.jar,我们已经包含了几个 Ant 目标以实现向后兼容性。 “Ant 目标”是我们的构建工具 Ant 的一个参数,它告诉它要应用 build.xml 文件的哪些部分。

    如果您在 Windows 系统上并且希望只获取 xerces.jar 文件,则可以执行 build.bat deprecatedjars。

    上面的链接继续列出您可能遇到的版本问题的更多潜在问题。让我知道这是否解决了您的问题;如果没有,我会继续寻找潜在的解决方案。

    【讨论】:

    • 谢谢!为您的回答,但我已继续使用另一种方法.. 是的,我了解库中的频繁更新.. 我肯定会再次需要 EXI 功能.. 因此也需要 xerces.. 会在几次后回复你我的另一个项目几周..如果您的解决方案在几天内有效,将会报告..谢谢:)
    • @cooperHawk 那么你是如何解决这个问题的呢?我有完全相同的问题:(
    【解决方案2】:

    这似乎是最新 ADT 的问题。自从我更新到 ADT 22.6.3 并修复了它从构建路径中删除 xerces JAR 文件并使用来自 xerces-for-android 的源代码后,我一直遇到同样的问题: https://code.google.com/p/xerces-for-android/source/checkout

    您只需要使用 SVN 下载源代码,然后将源代码复制到您的项目源文件夹中,并更新一些导入。它对我有用。

    希望对你有帮助。

    【讨论】:

    • 我试过你的方法来解决,但是当我把它显示很多错误我该如何解决
    • @NehaShukla 同样在这里 .. 我现在得到与 xalan.jar 相关的错误 .. 我想我会在 xml api 出现问题的地方转向 json
    猜你喜欢
    • 1970-01-01
    • 2016-07-23
    • 2015-05-13
    • 1970-01-01
    • 2012-12-24
    • 2015-05-28
    • 2015-05-21
    • 1970-01-01
    相关资源
    最近更新 更多