LinkageError JAXB 2.0 -> 2.1 (Tomcat)
Ich bin immer diese Fehlermeldung, wenn Sie versuchen, um Zugang zu meinem webservice läuft im tomcat.
Verursacht durch: java.lang.LinkageError: JAXB 2.0 API geladen wird von der bootstrap-classloader, sondern diese RI (aus jar:file:/C:/software/tomcat6/webapps/messaging/WEB-INF/lib/jaxb-impl-2.1.5.jar!/com/sun/xml/bind/v2/model/impl/ModelBuilder.class -) Bedürfnisse 2.1-API. Verwenden Sie das endorsed-Verzeichnis-Mechanismus zu platzieren jaxb-api.jar in der bootstrap-classloader. (Siehe http://java.sun.com/j2se/1.5.0/docs/guide/standards/)
Habe ich gegoogelt nach dem Fehler und Tat, was sollte es lösen (ich jaxb-api.jar die 2.1-version im JDK/lib/endorsed und JDK/jre/lib/endorsed), aber es scheint nicht zu haben keine Wirkung.
Ich hatte es nicht vor, und ich bin mir nicht sicher, was geändert wurde. Ich benutze JDK 6u10.
- Nehmen Sie auch einen Blick auf meine Antwort auf eine ähnliche Frage.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Java 6u10 umfasst JAXB 2.1, so gibt es keine Notwendigkeit, es überhaupt (es wurde aufgenommen, weil 6u4).
Recht, jetzt sieht es aus wie Sie haben einen Konflikt zwischen JAXB enthalten eine webapp und der im Lieferumfang enthaltenen JAXB, dass kommt mit JRE. Sie könnten versuchen, entfernen der JAXB-Glas aus Ihre webapp (
C:/software/tomcat6/webapps/messaging/WEB-INF/lib/jaxb-impl-2.1.5.jar
) und verlassen Sie sich auf die built-in version.Ist der empfohlene Weg ist, um zu definieren, die JAVA_ENDORSED_DIRS Umwelt-Variablen. Dann Tomcat verwenden, wird das Java-property:
in der Reihenfolge zu laden, die befürworteten Gläser. So erstellen Sie einen Ordner setzen jaxb-api.jar v2.1 und definieren Sie die Umgebungsvariable auf den Ordner.
Dies ist besser als mit der global endorsed-Verzeichnis, weil es nicht auf die ganze JVM und Sie nicht haben, um den Prozess zu wiederholen, wenn die JRE aktualisiert wird.
Ist es möglich, Sie haben die jaxb-Gläser in $JAVA_HOME/jre/lib/ext-Verzeichnis? Hier ist die definition der bootstrap-loader:
(Form angenommen hier)
Bitte suchen Sie für alle Orte, an denen Sie die jaxb-Gläser im system (zumindest jaxb-api jaxb-impl) und stellen Sie sicher, dass Sie entweder in den WEB-INF/lib-Verzeichnis der web-Anwendung oder in das lib-Verzeichnis des tomcat.