Error de generación de cliente de servicio web con JDK8

Resuelto a.b asked hace 10 años • 25 respuestas

Necesito consumir un servicio web en mi proyecto. Utilizo NetBeans, así que hice clic derecho en mi proyecto e intenté agregar un nuevo "Cliente de servicio web". La última vez que lo comprobé, esta era la forma de crear un cliente de servicio web. Pero resultó en un AssertionError, que decía:

java.lang.AssertionError: org.xml.sax.SAXParseException; systemId: jar:archivo:/ruta/a/glassfish/modules/jaxb-osgi.jar!/com/sun/tools/xjc/reader/xmlschema/bindinfo/binding.xsd; número de línea: 52; número de columna: 88; esquema_referencia: no se pudo leer el documento de esquema ' xjc.xsd ', porque el acceso al 'archivo' no está permitido debido a la restricción establecida por la propiedad accessExternalSchema .

La plataforma Java predeterminada para NetBeans era JDK8 (la versión oficial de Oracle), por lo que cuando cambié mi archivo netbeans.conf e hice JDK7 (también de Oracle) como predeterminado, todo funcionó bien. Entonces creo que el problema está en JDK8. Aquí está mi java -versionsalida:

versión de java "1.8.0"
Java(TM) SE Runtime Environment (compilación 1.8.0-b132)
Java HotSpot(TM) VM de servidor de 64 bits (compilación 25.0-b70, modo mixto)

Por ahora, mantendré JDK7 como mi plataforma Java predeterminada. Si hay una manera de hacer que JDK8 funcione, compártala.

a.b avatar Apr 11 '14 18:04 a.b
Aceptado

Bueno, encontré la solución. (basado en http://docs.oracle.com/javase/7/docs/api/javax/xml/XMLConstants.html#ACCESS_EXTERNAL_SCHEMA )

Cree un archivo llamado jaxp.properties(si no existe) debajo /path/to/jdk1.8.0/jre/liby luego escriba esta línea en él:

javax.xml.accessExternalSchema = all

Eso es todo. Disfruta del JDK 8.

a.b avatar Apr 11 '2014 12:04 a.b

No es una respuesta real, sino más bien una referencia.

Si está utilizando el complemento jaxws Maven y recibe el mismo mensaje de error, agregue la propiedad mencionada a la configuración del complemento:

...
<plugin>
  <groupId>org.jvnet.jax-ws-commons</groupId>
  <artifactId>jaxws-maven-plugin</artifactId>
  <version>2.3</version>
  <configuration>
    <!-- Needed with JAXP 1.5 -->
    <vmArgs>
        <vmArg>-Djavax.xml.accessExternalSchema=all</vmArg>
    </vmArgs>
  </configuration>
</plugin>
jassuncao avatar Mar 17 '2015 11:03 jassuncao

Ejecuto compilaciones ant dentro de Eclipse IDE (4.4, Luna, en Windows 7 x64). En lugar de modificar la biblioteca JRE instalada o cualquier script ant (tengo varios proyectos que incluyen XJC en sus compilaciones), prefiero cambiar la configuración de Eclipse "Configuraciones de herramientas externas" y agregar lo siguiente a los argumentos de VM para la configuración de compilación Ant:

-Djavax.xml.accessExternalSchema=all
gb96 avatar Jul 15 '2014 02:07 gb96

Lo siguiente funciona para wsimport 2.2.9 incluido en jdk 1.8.0_66:

wsimport -J-Djavax.xml.accessExternalSchema=all ....
tanderson avatar Dec 22 '2015 22:12 tanderson