Android核心库错误

当我包含jaxp jar文件时,出现如下错误

trouble processing "javax/xml/XMLConstants.class": [2009-05-08 16:53:18 - TestProject] Attempt to include a core VM class in something other than a core library. It is likely that you have attempted to include the core library from a desktop virtual machine into an application, which will most assuredly not work. If you really intend to build a core library -- which is only appropriate as part of creating a full virtual machine binary, as opposed to compiling an application -- then use the "--core-library" option to suppress this error message. If you go ahead and use "--core-library" but are in fact building an application, then please be aware that your build will still fail at some point; you will simply be denied the pleasure of reading this helpful error message. [2009-05-08 16:53:18 - TestProject] 1 error; aborting [2009-05-08 16:53:18 - TestProject] Conversion to Dalvik format failed with error 1 

有人遇到这个问题吗? 任何帮助将非常感激,我已经与一些解决scheme,但他们并不具体。

Solutions Collecting From Web of "Android核心库错误"

从Dx获得的错误仅基于正在导入的库的Java包名称,而没有其他内容。

该消息可以概括为: 如果在java.*javax.*命名空间中导入一个库,它很可能取决于其他仅作为JDK一部分提供的“核心”库,因此不会在Android平台上可用。 它基本上阻止你做一些愚蠢的事情,当你看到这个消息的时候,这是准确的99%。

现在,当然,只是因为一个java包以java.*javax.*开头并不一定意味着它依赖于JDK。 它可以在android中完美的工作。 为了避免愚蠢的检查,将–core-library选项添加到dx。 更改$ANDROID_HOME/platform-tools/dx的最后一行,

 exec java $javaOpts -jar "$jarpath" "$@" 

至,

 exec java $javaOpts -jar "$jarpath" --core-library "$@" 

在我的情况下,我包括一个依赖jackson依赖于JAXB的图书馆。 对我来说,重写愚蠢的检查是可以接受的,因为图书馆对jackson的使用只适用于JSON,而不适用于XML序列化(我只包括JAXB API库,而不是impl)。 当然,我希望有一个更清晰的方法去做这件事,但为了避免使用jackson而重新编写顶级图书馆不是一个select。

我看到两种可能性:

在您的项目文件夹中,文件.classpath可能是错误的。 尝试将其replace为:

 <?xml version="1.0" encoding="UTF-8"?> <classpath> <classpathentry kind="src" path="src"/> <classpathentry kind="src" path="gen"/> <classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/> <classpathentry kind="output" path="bin"/> </classpath> 

如果它不起作用,这意味着您试图包含的库与Android不兼容。

如果你包含一个核心类,那么这个错误是自我解释的。 如果你不是(search你的代码,只是为了确保),那么我偶尔会看到这个错误,只有在Android“library”被多次意外添加到Eclipse构buildpath中时才使用Eclipse。

我不知道这是怎么回事,但是现在我发生了两次。 为了解决这个问题,你需要像Nicolas指出的那样修复.classpath文件。 另一种方法是编辑“Java Build Path”(右键单击项目并select属性),然后删除Android *库(如果有多个将其全部删除)。

这将导致项目编译失败,并有很多错误,但是,一旦你确定你已经摆脱了所有的库,然后再次右键单击该项目,select“Android工具” – >“修复项目属性”和Android.jar的正确(单一副本)将被添加回来,事情应该从那里再次正常工作。

我将这个Android项目复制到同一个工作区后得到了这个。 之后从磁盘上删除它还不够,导致Eclipse仍然隐藏了一些对它的引用。 我还必须删除工作区文件夹下的以下文件夹:

.metadata位于\ .plugins \ org.eclipse.core.resources.projects [NameOfTheDuplicateProject]

我不包括一个核心课程,或者build立一个核心课程或任何一个核心课程。

是的,你是:

麻烦处理“javax / xml / XMLConstants.class”

java。*和javax。*都算在内。 你可以使用–core-library开关,如果你只是想在testing应用程序中忽略这个开关,而是留意警告:“你的应用程序在某些时候仍然无法build立或运行。例如,一旦升级操作系统,你的应用程序就不能正常运行了,你应该责怪这个问题。

正如它说的,对于一个运输应用程序来说,正确的解决方法是重新包装这些类(即将它们移动到一个新目录,相应地编辑它们的“包”行,并更新其调用者中的“导入”行)。