mercoledì, luglio 23, 2008

[Soluzione] Problema Netbeans 6.1 + jaxb + jaxws

Se si prova a sviluppare un programma in java usando Netbeans 6.0 + jaxb 2.1 + jaxws 2.1 non funzionerà perché verrà generata la seguente eccezione:


Exception in thread "AWT-EventQueue-0" java.lang.LinkageError: JAXB 2.0 API is being loaded from the bootstrap classloader, but this RI (from jar:file:/opt/netbeans-6.1/java2/modules/ext/jaxws21/jaxb-impl.jar!/com/sun/xml/bind/v2/model/impl/ModelBuilder.class) needs 2.1 API. Use the endorsed directory mechanism to place jaxb-api.jar in the bootstrap classloader. (See http://java.sun.com/j2se/1.5.0/docs/guide/standards/)


Nel mio caso l'eccezione viene generata con la seguente istruzione:


JAXBContext jaxbCtxMain = JAXBContext.newInstance( com.company.monitor.xml.Monitor.class.getPackage().getName());


La soluzione è quella di creare un cartella chiamata "endorsed" nella $JAVA_HOME.
In ubuntu :


#Creazione della cartella endorsed
sudo mkdir /usr/lib/jvm/java-6-sun/jre/lib/endorsed/
#Copia dei file jaxb-api.jar jaxws-api.jar in endorsed
cp $NETBEANS_HOME/java2/modules/ext/jaxws21/api/jax*api.jar


Poi bisogna modificare le librarie del progetto sotto netbeans:


1. Tasto dx sul progetto "Properties"
2. Andare sotto Libraries e Rimuovere(remove) "JAXB 2.1" e "JAX-WS 2.1"


Provare a ricompilare ed eseguire il progetto.

Info:
http://java.sun.com/j2se/1.5.0/docs/guide/standards/

2 commenti:

Anonimo ha detto...

Ciao,
ho provato a seguire il tuo consiglio ma adesso ho questo errore:
D:\Programmi\Eclipse3.3\Project\HelloWorldWS_Client_Application\nbproject\jaxws-build.xml:11: taskdef class com.sun.tools.ws.ant.WsImport cannot be found
BUILD FAILED (total time: 0 seconds)

led aqurium ha detto...

Please contact us if you need our products, and look forward to your visit.
COMPANY TEL:18006580970 Led Web-Stores
christmas net lights