2009-05-08 9 views
19

Wenn ich mit der jaxp jar-Datei, ich den Fehler immer wie folgtAndroid Core-Bibliothek Fehler

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 

Ist jemand dieses Problem konfrontiert? Jede Hilfe wird wirklich geschätzt. Ich bin mit einigen Lösungen gegangen, aber sie sind nicht spezifisch.

+0

Verwenden Sie JAR-Dateien von Drittanbietern? –

+0

Ja, SchemaFactory-Klasse und Validator-Klasse sind in diesem Jar –

+0

Ich bekomme den gleichen Fehler, und alles, was ich versuche zu tun, ist einfach zu bauen: http://developer.android.com/guide/tutorials/views /hello-webview.html Befolgte die Anweisungen zum Buchstaben. :( –

Antwort

4

Ich sehe zwei Möglichkeiten:

in Ihrem Projekt Ordner, die Datei .classpath falsch sein könnte. Versuchen Sie, ersetzen Sie ihn durch:

<?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> 

Wenn es nicht funktioniert, es bedeutet, dass die Bibliothek, die Sie enthalten versuchen, mit Android kompatibel ist.

+0

Das funktionierte für mich, als ich den folgenden Fehler hatte: 'Problem bei der Verarbeitung von Java/Nio/CharBuffer.class' – ubershmekel

-1

I'm not including a core class or building a core library or any of that.

ja, Sie sind:

trouble processing "javax/xml/XMLConstants.class"

java * und * javax beide zählen... Sie können den Schalter --core-library verwenden, wenn Sie dies nur in einer Test-App ignorieren möchten, aber beachten Sie die Warnung: "Ihre Anwendung wird irgendwann nicht mehr erstellt oder ausgeführt. Seien Sie bitte auf wütende Kunden vorbereitet, die finden Zum Beispiel, dass Ihre Anwendung nach dem Upgrade ihres Betriebssystems nicht mehr funktioniert. Sie werden für dieses Problem verantwortlich sein. "

Die richtige Lösung, wie es heißt, für eine Versand-App, besteht darin, diese Klassen neu zu packen (dh sie in ein neues Verzeichnis zu verschieben, ihre "Paket" -Zeilen entsprechend zu bearbeiten und die "Import" -Zeilen in ihren Aufrufern zu aktualisieren) .

+2

Ich hatte dieses Problem auch, und zitieren nur die beleidigende Datei aus die nicht hilfreiche Fehlermeldung ist sehr hilfreich.Dies ist eigentlich ein Problem, das auftritt, ohne zu versuchen, die Kernbibliotheken zu erstellen.Kontrollieren Sie die Antworten von Nicolas Raoul und Charlie Collins, um zu sehen, wie hilfreich aussieht. –

3

Wenn Sie sind einschließlich einer Kernklasse dann ist dieser Fehler selbsterklärend. Wenn Sie nicht (suchen Sie Ihren Code, nur um sicher zu gehen), dann habe ich diesen Fehler von Zeit zu Zeit nur bei der Verwendung von Eclipse gesehen, wenn die Android "Bibliothek" mehrfach zum Eclipse-Build-Pfad hinzugefügt wird.

Ich weiß nicht, wie es in diesem Zustand kommt, aber es ist mir jetzt zweimal passiert. Um dies zu beheben, müssen Sie die Datei .classpath wie von Nicolas beschrieben korrigieren. Eine weitere Möglichkeit besteht darin, den "Java Build Path" zu bearbeiten (Rechtsklick auf das Projekt und Eigenschaften auswählen) und die Android * -Bibliotheken zu entfernen (wenn mehrere vorhanden sind, werden alle entfernt).

Dies führt dazu, dass das Projekt nicht kompiliert werden kann und viele Fehler aufweist. Wenn Sie jedoch alle Bibliotheken entfernt haben, können Sie mit der rechten Maustaste auf das Projekt klicken und "Android Tools" -> "Fix" auswählen Projekteigenschaften "und die korrekte (Einzelkopie) von Android.jar wird wieder hinzugefügt und die Dinge sollten von dort wieder gut funktionieren.

+0

Dies funktionierte wunderbar für mich, danke. –

+1

Durch die So, ich hatte das gleiche Problem in IntelliJ IDEA beim Laden eines Projekts.Um es zu lösen, entfernte ich alle Facetten, baute das Projekt neu auf und fügte dann die Android-Facette zurück zu dem Android-Zielmodul.No – jwadsack

+0

Vielen Dank für die Lösung.Ich habe gelesen Alle Lösungen, scheint keine für mich zu arbeiten. Entfernen android.jar Datei aus Build-Pfad und mit "Android Tools -> Projekteigenschaften korrigieren "löste das Problem. – amadamala

1

Ich habe dies nach dem Kopieren-Einfügen eines Android-Projekts in den gleichen Arbeitsbereich. Es war nicht genug, es von der Festplatte zu löschen, denn Eclipse hat immer noch einen Hinweis darauf versteckt. Ich hatte auch die folgenden Ordner unter dem Workspace-Ordner zu entfernen:

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

15

der Fehler, den Sie von Dx erhalten nur auf der Java-Paketnamen der Libs sonst Sie importieren, und nichts basiert.

die Nachricht kann wie folgt zusammengefasst von: , wenn Sie eine Bibliothek im java.* oder javax.* Namespace importieren, ist es sehr wahrscheinlich, dass es auf anderen „Kern“ Bibliotheken abhängt, die nur als Teil des JDK vorgesehen sind, und deshalb gewonnen‘ t auf der Android-Plattform verfügbar sein. Es verhindert im Wesentlichen, dass Sie etwas Dummes tun, was genau 99% der Zeit ist, wenn Sie diese Nachricht sehen.

jetzt, natürlich, nur weil ein Java-Paket mit java.* oder javax.* startet bedeutet nicht unbedingt, dass es auf das JDK richtig abhängt. es kann tadellos gut in android funktionieren. Um die Dummheitsprüfung zu umgehen, fügen Sie die Option --core-library zu dx hinzu. Ändern Sie die letzte Zeile von $ANDROID_HOME/platform-tools/dx aus,

exec java $javaOpts -jar "$jarpath" "[email protected]" 

zu,

exec java $javaOpts -jar "$jarpath" --core-library "[email protected]" 

in meinem Fall, ich war mit einer Bibliothek, die auf Jackson angewiesen, die auf JAXB abhängt. Für mich war das Überschreiben der Dummheitsprüfung akzeptabel, weil die Verwendung von Jackson in der Bibliothek nur für JSON und nicht für die XML-Serialisierung galt (ich nehme nur die JAXB-API-Bibliothek auf, nicht die Impl). Natürlich wünschte ich, es gäbe einen saubereren Weg, aber es war keine Option, die Top-Level-Bibliothek neu zu schreiben, um die Verwendung von Jackson zu vermeiden.

+0

In meinem Fall gibt es keine $ dx Datei in $ ANDROID_HOME/platform-tools /, obwohl ich sie in $ ANDROID_HOME/build-tools/21.1.2/gefunden habe. Dort habe ich es so geändert, wie du es vorgeschlagen hast, aber den gleichen Fehler bekommen. Irgendeine Hilfe ? –

+0

welche Build-Tools ist Ihr Build-Poinitng zu? –

+0

Ich verwende Buld-Tools v21.1.2 als Ordnerpfad, der im obigen Kommentar angezeigt wird. –