2012-05-03 14 views
12

Seguí las instrucciones here para instalar correctamente la última versión de JAX-WS (2.2.6) en la parte superior de mi JDK v1.6.0_31 (es decir, copiar jaxws-api.jar y jaxb -api.jar de la versión JAX-WS en mi directorio $ {JAVA_HOME}/lib/endorsed). Desde el interior de Eclipse que se puede ejecutar la tarea ant wsimport correctamente y el código generado se da una indicación de la versión en los comentarios de:Instalación de la última JAX-WS en JDK 6

/** 
* This class was generated by the JAX-WS RI. 
* JAX-WS RI 2.2.6b21 
* Generated source version: 2.2 
* 
*/ 

El problema que estoy teniendo es que el código de cliente generada está mostrando errores que me llevan para creer que el compilador sigue utilizando JAX-WS versión 2.1:

The constructor Service(URL, QName, WebServiceFeature[]) is undefined 

y

The attribute required is undefined for the annotation type XmlElementRef 

he intentado establecer explícitamente el arg -Djava.endorsed.dir al iniciar ECLIP se y también intenté configurar esta arg en Eclipse-> Preferences-> Java-> InstalledJREs pero ninguno de estos ayudó. Mi classpath de la tarea wsimport se define para ver los archivos JAX-WS 2.2.6. También intenté establecer la ruta de compilación de mi proyecto para extraer los archivos 2.2.6. Nada parece funcionar. ¿Me estoy perdiendo de algo?

+0

¿Estás seguro de que el binario de Java con el que ejecutas wsimport pertenece al JAVA_HOME que has modificado? –

Respuesta

6

No estoy seguro de por qué no lo está recogiendo front ended lib (aparte de que tal vez el directorio endorsado que pones tus libs es para un JRE/JDK diferente que usa eclipse?), Pero con respecto a lo último que intentaste ... Agregar los archivos JAR directamente a la ruta de compilación ... esto funcionará si ordena las entradas de compilación de forma tal que los archivos JAX-WS estén por encima de la entrada JDK.

1

Ha producido código que necesita JAX-WS 2.1. La versión 2.0 no tiene clase WebServiceFeature, y como resultado tampoco es un constructor en el servicio con dicho tipo de argumento.

Como se ve, en Java SE 6 no hay un constructor como: javax.xml.ws.Service SE 6, pero por ejemplo en Java EE 6 existe: javax.xml.ws.Service EE 6

enter image description here

0

se puede utilizar el siguiente comando para generar los recibos de wsdl2java -p -client -frontend jaxws21

1

Si es posible una solución podría reemplazar jdk1.6 con un JDK superior (ya sea 1.7 o 1.8) .

Cuestiones relacionadas