2010-11-11 23 views
2

J'essaie de charger ma webapp dans Tomcat. Il semble se plaindre qu'il a une version plus ancienne d'un JAR que mon application. Dois-je supprimer ce fichier JAR plus ancien, utiliser une version plus récente de Java, modifier le chargeur de classe bootstrap (comment?) Ou quoi?Dans Tomcat, java.lang.LinkageError: L'API JAXB 2.1 est en cours de chargement à partir du chargeur de classe d'amorçage

Message: JAXB 2.1 API is being loaded from the bootstrap classloader, but this RI (from jar:file:/C:/Program%20Files/Apache%20Software%20Foundation/Tomcat%205.5/webapps/SkillsDB/WEB-INF/lib/jaxb-impl.jar!/com/sun/xml/bind/v2/model/impl/ModelBuilder.class) needs 2.2 API. Use the endorsed directory mechanism to place jaxb-api.jar in the bootstrap classloader. (See http://java.sun.com/j2se/1.6.0/docs/guide/standards/)

Caused by: Executing action [getDocx] of controller [FormattedDocumentController] caused exception: java.lang.LinkageError : JAXB 2.1 API is being loaded from the bootstrap classloader, but this RI (from jar:file:/C:/Program%20Files/Apache%20Software%20Foundation/Tomcat%205.5/webapps/SkillsDB/WEB-INF/lib/jaxb-impl.jar!/com/sun/xml/bind/v2/model/impl/ModelBuilder.class) needs 2.2 API. Use the endorsed directory mechanism to place jaxb-api.jar in the bootstrap classloader. (See http://java.sun.com/j2se/1.6.0/docs/guide/standards/)

Répondre

2

Mettez votre JAXB 2.2 Jarres en

%JAVA_HOME%\lib\endorsed 

Il devrait fonctionner.

Si votre Java est installé dans

C:\Program Files\Java 

alors vous devriez mettre JAXB 2.2 Jarres en:

C:\Program Files\Java\lib\endorsed 
répertoire

.

+1

Cela devrait être fait sur tous les systèmes qu'il prévoit sur l'exécution de son webapp sur. Il doit y avoir un moyen moins intrusif que de modifier l'installation de Java. Je verrai ce que je peux trouver. –

+0

Je l'ai essayé, mais cela n'a pas fonctionné pour moi (peut-être parce que j'utilisais Netbeans 6.9). J'ai donc trouvé une solution similaire dans laquelle j'ai créé le dossier approuvé dans CATALINA_HOME (répertoire d'installation de tomcat) et y ai placé jaxb-api2.2.jar. –

2

Je ne sais pas exactement pourquoi, mais je l'ai résolu de la manière suivante.

j'ai réalisé Tomcat utilisait une machine virtuelle Java (jre1.6.0_03) qui n'a pas été le défaut d'un (jre1.6.0_26, dans le dossier C : \ Program Files \ Java \ jre6).

J'ai donc arrêté Tomcat, lancé le programme "Configurer Tomcat", dans le tableur "Java", j'ai choisi "Utiliser par défaut" puis j'ai redémarré Tomcat.

0

Mettez votre JAXB 2.2 JARs dans le dossier, vous devez d'abord savoir où ce dossier utilise ceci:

System.out.println (System.getProperty ("java.endorsed.dirs"));

Le mien était d: \ Tomcat 7.0 \ approuvé