Verbindungsfehler JAXB 2.0 - 2.1 (Tomcat)

8

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.

    
Bart van Heukelom 07.04.2009, 12:02
quelle

3 Antworten

7

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.

    
andri 14.04.2009, 13:32
quelle
2

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.

    
kgiannakakis 14.04.2009 13:21
quelle
1

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.

    
David Rabinowitz 07.04.2009 14:45
quelle

Tags und Links