Ich erhalte diesen Fehler, wenn ich versuche, auf meinen Webservice innerhalb von Tomcat zuzugreifen.
Erstellt von: java.lang.LinkageError: JAXB 2.0 API wird vom Bootstrap Classloader geladen, aber diese RI (aus jar: Datei: / C: / software / tomcat6 / webapps / messaging / WEB-INF / lib / jaxb-impl-2.1.5.jar! /com/sun/xml/bind/v2/model/impl/ModelBuilder.class) benötigt 2.1 API. Verwenden Sie den indossierten Verzeichnismechanismus, um jaxb-api.jar im Bootstrap-Klassenlader zu platzieren. (Siehe Ссылка )
Ich habe nach dem Fehler gegoogelt und getan, was ihn lösen sollte (ich habe jaxb-api.jar, Version 2.1 in JDK / lib / indossiert und JDK / jre / lib / indossiert), aber es scheint keine Wirkung zu haben .
Ich hatte es vorher nicht, und ich bin mir nicht sicher, was sich geändert hat. Ich benutze JDK 6u10.
Java 6u10 enthält JAXB 2.1, es ist also nicht notwendig, es einzuschließen (es wurde seit 6u4 aufgenommen).
Im Moment sieht es so aus, als hätten Sie einen Konflikt zwischen JAXB, der in einer Webapp enthalten ist, und dem gebündelten JAXB, der mit JRE geliefert wird. Sie könnten versuchen, das JAXB-Jar von Ihrer Webanwendung ( C:/software/tomcat6/webapps/messaging/WEB-INF/lib/jaxb-impl-2.1.5.jar
) zu entfernen und sich auf die integrierte Version zu verlassen.
Die empfohlene Methode besteht darin, die Umgebungsvariable JAVA_ENDORSED_DIRS zu definieren. Dann wird Tomcat diese Java-Eigenschaft verwenden:
%Vor%um die bestätigten Gläser zu laden. Also, erstellen Sie einen Ordner, legen Sie dort jaxb-api.jar v2.1 ab und definieren Sie die Umgebungsvariable so, dass sie auf diesen Ordner zeigt.
Dies ist besser als die Verwendung des globalen indossierten Verzeichnisses, da es sich nicht auf die gesamte JVM auswirkt und Sie den Prozess nicht wiederholen müssen, wenn die JRE aktualisiert wird.
Ist es möglich, dass Sie die jaxb jars im Verzeichnis $ JAVA_HOME / jre / lib / ext haben? Hier ist die Definition des Bootstrap Loaders:
Bootstrap - Dieser Klassenlader enthält die grundlegenden Laufzeitklassen von die Java Virtual Machine und alle anderen Klassen aus JAR - Dateien, die in der Systemerweiterungsverzeichnis ($ JAVA_HOME / jre / lib / ext). HINWEIS - Einige JVMs können dies als mehr als implementieren ein Klassenlader, oder es kann nicht sein sichtbar (als Klassenlader) überhaupt.
(Aufgenommen hier )
Bitte suchen Sie nach allen Stellen, an denen Sie die jaxb jars im System haben (zumindest jaxb-api und jaxb-impl) und stellen Sie sicher, dass sie entweder im Verzeichnis WEB-INF / lib Ihrer Webanwendung oder in das Verzeichnis lib des Tomcat.