错误而导入的jar到Android项目 [英] Error while importing jar into an android project

查看:206
本文介绍了错误而导入的jar到Android项目的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

下面的错误我得到的,而把阿帕奇的xerces.jar在构建路径。

我已搜查前的错误..和描述的解决方案是为冲突的罐子..但心不是这里的情况..我收到由于一些ParserException一个糟糕的UTF-8

我曾尝试(但没有运气):

  • 清洁项目
  • 重新启动日食
  • 更新ADT,SDK
  • 删除所有库和固定凸出的属性,然后导入 Xerces的解决冲突
  • 在加上我只是只有1个外部LIB的Xerces

这是在<一个解决方案href="http://stackoverflow.com/questions/2680827/conversion-to-dalvik-format-failed-with-error-1-on-external-jar">here

删除的Xerces运行该凸出

几个月前,我曾通常通过构建路径进口Xerces和它的工作。 任何帮助AP preciated!

  

[2013年12月24号12点21分44秒 - 试用]霉素意外的顶级例外:   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(本机方法)在   sun.reflect.NativeMethodAccessorImpl.invoke(来源不明)在   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.运行(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.运行(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更多...在解析CST 012C的偏移00000afe ...而   解析CST 00a5偏移量00000316 ...在分析   >组织/阿帕奇/的Xerces / IMPL / XPath的/正则表达式/ ParserForXMLSchema.class

     

> [2013年12月24日12时21分44秒 - 试用]霉素1的错误;中止[2013年12月24日   12时21分44秒 - 试用]转换为的Dalvik格式失败,出现错误1

解决方案

在你的问题,你提到:

  

几个月前,我曾通常通过构建路径进口Xerces和它曾

这引发了红旗对于我来说,因为月很可能会成为一辈子当谈到那些不断更新的库。也许你的问题是不是与Eclipse中的jar文件的兼容性,而是一个问题的jar文件本身,这可能与坏的UTF-8字节解释你的分析器错误。

据阿帕奇( http://xerces.apache.org/xerces2-j/的Install.html ),事实证明,的xerces.jar 现在去precated:

  

的xerces.jar 不再可用在主发行。您仍然可以下载这个罐子从pcated德$ P $分布。 xerces.jar的是包含所有语法分析器类文件的JAR文件(即,它包含了xercesImpl.jar和xml-apis.jar内容的交叉点)。

所以,上面列出的同一页上,我发现,你只需要使用两个新的文件替换的xerces.jar: xercesImpl.jar XML-apis.jar 。见下面摘录(从与上述相同的链接):

  

变化Xerces的jar文件

     

为了适应2.0.0的Beta 3和beta 4中的Xercesjar文件默认组织的变化是引入了其中的Xerces中使用XSLT处理器(例如Xalan)很常见的情况,的Xerces之间。还有xercesSamples.jar文件,我们仍然生产,Xerces的前身是带着一个名为xerces.jar的。该文件包含了所有的解析器的功能。 两个文件现在包括:xercesImpl.jar,我们的实现各种API的,和xml-apis.jar,这些API本身。这样做,这样,如果你的XSLT处理器附带的API在同一水平的那些的Xerces-J的支持,您可避免使XML-apis.jar在classpath。

如果你仍然想/需要使用的xerces.jar,阿帕奇提供了一个途径向后兼容性

  

如果您希望使用的xerces.jar相反,我们为了向后兼容一些Ant目标。一个Ant目标是给蚂蚁,我们构建工具的参数,告诉它应用到的build.xml文件的部分。

     

如果您在Windows系统上,你希望只得到的xerces.jar文件,你可以执行的build.bat德precatedjars。

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

Below error i get while putting apache xerces.jar in build path ..

I have searched before for the error .. and solutions described were for conflicting jars .. but that isnt the case here .. i am getting some ParserException due a bad utf-8

I have tried (but with no luck):

  • cleaning the project
  • restarting eclipse
  • updating adt, sdk
  • removing all libs and fixing proj properties and then importing xerces to resolve conflicts
  • plus i just have only 1 external lib xerces

from solutions at here

removing xerces runs the proj

Few months ago i had imported xerces normally via build path and it had worked. Any help appreciated!

[2013-12-24 12:21:44 - tryout] Dx UNEXPECTED TOP-LEVEL EXCEPTION: com.android.dx.cf.iface.ParseException: bad utf-8 byte a0 at offset 00000004 at com.android.dx.cf.cst.ConstantPoolParser.parseUtf8(ConstantPoolParser.java:374) at com.android.dx.cf.cst.ConstantPoolParser.parse0(ConstantPoolParser.java:262) at com.android.dx.cf.cst.ConstantPoolParser.parse0(ConstantPoolParser.java:294) at com.android.dx.cf.cst.ConstantPoolParser.parse(ConstantPoolParser.java:150) at com.android.dx.cf.cst.ConstantPoolParser.parseIfNecessary(ConstantPoolParser.java:124) at com.android.dx.cf.cst.ConstantPoolParser.getPool(ConstantPoolParser.java:115) at com.android.dx.cf.direct.DirectClassFile.parse0(DirectClassFile.java:482) at com.android.dx.cf.direct.DirectClassFile.parse(DirectClassFile.java:406) at com.android.dx.cf.direct.DirectClassFile.parseToInterfacesIfNecessary(DirectClassFile.java:388) at com.android.dx.cf.direct.DirectClassFile.getMagic(DirectClassFile.java:251) at com.android.dx.command.dexer.Main.processClass(Main.java:665) at com.android.dx.command.dexer.Main.processFileBytes(Main.java:634) at com.android.dx.command.dexer.Main.access$600(Main.java:78) at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:572) at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:284) at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:166) at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144) at com.android.dx.command.dexer.Main.processOne(Main.java:596) at com.android.dx.command.dexer.Main.processAllFiles(Main.java:498) at com.android.dx.command.dexer.Main.runMonoDex(Main.java:264) at com.android.dx.command.dexer.Main.run(Main.java:230) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at com.android.ide.eclipse.adt.internal.build.DexWrapper.run(DexWrapper.java:187) at com.android.ide.eclipse.adt.internal.build.BuildHelper.executeDx(BuildHelper.java:786) at com.android.ide.eclipse.adt.internal.build.builders.PostCompilerBuilder.build(PostCompilerBuilder.java:597) at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:733) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:206) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:328) at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:403) at org.eclipse.core.internal.resources.Project$1.run(Project.java:618) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2345) at org.eclipse.core.internal.resources.Project.internalBuild(Project.java:597) at org.eclipse.core.internal.resources.Project.build(Project.java:124) at com.android.ide.eclipse.adt.internal.project.ProjectHelper.doFullIncrementalDebugBuild(ProjectHelper.java:1116) at com.android.ide.eclipse.adt.internal.launch.LaunchConfigDelegate.launch(LaunchConfigDelegate.java:147) at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:858) at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:707) at org.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch(DebugUIPlugin.java:1018) at org.eclipse.debug.internal.ui.DebugUIPlugin$8.run(DebugUIPlugin.java:1222) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) Caused by: java.lang.IllegalArgumentException: bad utf-8 byte a0 at offset 00000004 at com.android.dx.rop.cst.CstString.throwBadUtf8(CstString.java:171) at com.android.dx.rop.cst.CstString.utf8BytesToString(CstString.java:143) at com.android.dx.rop.cst.CstString.(CstString.java:200) at com.android.dx.cf.cst.ConstantPoolParser.parseUtf8(ConstantPoolParser.java:371) ... 43 more ...while parsing cst 012c at offset 00000afe ...while parsing cst 00a5 at offset 00000316 ...while parsing > org/apache/xerces/impl/xpath/regex/ParserForXMLSchema.class

> [2013-12-24 12:21:44 - tryout] Dx 1 error; aborting [2013-12-24 12:21:44 - tryout] Conversion to Dalvik format failed with error 1

解决方案

In your question, you mention:

Few months ago i had imported xerces normally via build path and it had worked

This raised the red flag for me, since "months" might as well be a lifetime when it comes to libraries that are constantly being updated. Perhaps your issue is not with the jar file compatibility with Eclipse, but rather, an issue with the jar file itself, which could explain your parser error with the "bad UTF-8 byte".

According to Apache (http://xerces.apache.org/xerces2-j/install.html), turns out that xerces.jar is now deprecated:

xerces.jar is no longer available in the main distribution. You can still download this jar from deprecated distribution. xerces.jar is a Jar file that contains all the parser class files (i.e., it contains the intersection of the contents of xercesImpl.jar and xml-apis.jar).

So, on the same page as listed above, I found that you just have to replace xerces.jar with two new files: xercesImpl.jar and xml-apis.jar. See excerpt below (from same link as above):

Changes in Xerces jar files:

In order to accommodate the very common case in which Xerces is used with an XSLT processor such as Xalan, between Xerces 2.0.0 beta 3 and beta 4 a change in the default organization of Xerces' jar files was introduced. As well as the xercesSamples.jar file, which we still produce, Xerces formerly came with a file called xerces.jar. This file contained all of the parser's functionality. Two files are now included: xercesImpl.jar, our implementation of various APIs, and xml-apis.jar, the APIs themselves. This was done so that, if your XSLT processor ships with APIs at the same level as those supported by Xerces-J, you can avoid putting xml-apis.jar on your classpath.

If you still want/need to use xerces.jar, Apache has provided a way for backwards compatibility:

Should you wish to use the xerces.jar instead, we have included several Ant targets for backward compatibility. An "Ant target" is an argument given to Ant, our build tool, that tells it which portions of the build.xml file to apply.

If you are on a Windows system and you wish to get only the xerces.jar file, you would execute build.bat deprecatedjars.

The link above continues to list more potential problems you could encounter with version issues. Let me know if this solves your issue; if not, I'll continue to look for potential solutions.

这篇关于错误而导入的jar到Android项目的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆