online generate from java eclipse wsdl stub wsdl2java

java - generate - ¿Restricción de acceso en la clase debido a la restricción en la biblioteca rt.jar requerida?



wsdl2java maven (15)

Estoy intentando compilar el código Java 1.4 que fue creado por WSDL2Java de IBM en Java5 sin recrear los apéndices y vi este error en Eclipse. Supongo que los apéndices creados solo deberían compilarse siempre que los frascos de tiempo de ejecución estén disponibles (lo están).

Access restriction: The type QName is not accessible due to restriction on required library C:/Program Files/Java/jdk1.5.0_16/jre/lib/rt.jar

El nombre completo de la clase es javax.xml.namespace.QName

Qué está pasando aquí?

¿Es este un caso en el que estoy tratando de refactorizar un cerdo de salchicha? ¿Estoy mejor recreando los talones?


Acabo de tener este problema también. Aparentemente había establecido el JRE en 1.5 en lugar de 1.6 en mi ruta de compilación.


Además de la solución de Nels Beckman , tengo los siguientes consejos:

En Configurar ruta de compilación , tuve que reorganizar el orden de mis entradas en Ordenar y exportar .

Además, como desarrollador de Eclipse PDE, necesitaba reorganizar el orden de mis dependencias en mi MANIFEST.MF , agregando el paquete problemático como primero en la lista.

Jugando con estos diales, junto con ejecutar Proyecto> Limpiar en medio, pude resolver estas advertencias.


En el caso de que esté seguro de que debería poder acceder a una clase determinada, esto puede significar que agregó varios frascos a su proyecto que contienen clases con nombres idénticos (o rutas de acceso) pero contenido diferente y se están ocultando entre sí (normalmente, una costumbre antigua). jar de compilación contiene una versión anterior incorporada de una biblioteca de terceros).

Por ejemplo, cuando agrega una implementación jar:

a.b.c.d1 a.b.c.d2

pero también una versión anterior implementando solo:

a.b.c.d1 (d2 is missing altogether or has restricted access)

Todo funciona bien en el editor de código, pero falla durante la compilación si la biblioteca "antigua" eclipsa a la nueva: d2 de repente se vuelve "faltante o inaccesible" incluso cuando está allí.

La solución es verificar el orden de las bibliotecas en tiempo de compilación y asegurarse de que la que tiene la implementación correcta sea la primera.


En mi caso hubo una discrepancia entre el JRE de ruta de compilación y el JRE instalado en el entorno de ejecución. Me mudé a Proyecto> Propiedades> compilador de Java. Había un mensaje de advertencia en la parte inferior.

Hice clic en los enlaces ''JRE instalado'', ''Entorno de ejecución'', ''Ruta de compilación de Java'' y cambié la versión de JDK a 1.7 y la advertencia desapareció.


Hay otra solución que también funciona.

  1. Vaya a la configuración de la ruta de compilación en las propiedades del proyecto.
  2. Eliminar la biblioteca del sistema JRE
  3. Añadir de nuevo; Seleccione "Agregar biblioteca" y seleccione la biblioteca del sistema JRE . El defecto funcionó para mí.

Esto funciona porque tienes varias clases en diferentes archivos jar. Eliminar y volver a agregar JRE lib hará que las clases correctas sean las primeras. Si desea una solución fundamental, asegúrese de excluir los archivos jar con las mismas clases.

Para mí tengo: javax.xml.soap.SOAPPart en tres tarros diferentes: axis-saaj-1.4.jar , saaj-api-1.3.jar y el rt.jar


La solución es agregar un sistema JRE correcto a través de la ruta de compilación, pero su eclipse aún puede tener el error. Para resolverlo, diríjase a Java Build path -> Order and Export y mueva su biblioteca de sistema JRE a la parte superior. Esto ha solucionado mi problema.


Lo siento por actualizar un viejo POST. Tengo el problema reportado y lo resolví como se dice a continuación.

Suponiendo que está utilizando el complemento de Eclipse + m2e maven, si obtiene este error de restricción de acceso, haga clic derecho en el proyecto / módulo en el que tiene el error -> Propiedades -> Crear ruta -> Biblioteca -> Reemplazar JDK / JRE al que se usa en el espacio de trabajo de eclipse.

Seguí los pasos anteriores y el problema está resuelto.


Me encontré con el mismo problema. Encontré la respuesta en el sitio web: http://www.17ext.com .
Primero, borre las bibliotecas del sistema JRE. Luego, vuelva a importar las bibliotecas del sistema JRE.

No sé por qué. Sin embargo, solucioné mi problema, espero que pueda ayudarte.


Para mi esta como lo resuelvo:

  • ir a la ruta de compilación del proyecto actual

bajo bibliotecas

  • seleccione la " Biblioteca del sistema JRE [jdk1.8xxx]"
  • haga clic en editar
  • y seleccione "JRE predeterminado del espacio de trabajo (jdk1.8xx)" o JRE alternativo
  • Haga clic en finalizar
  • Haga clic en Aceptar

Nota: asegúrese de que en Eclipse / Preferencias (NO del proyecto) / Java / Install JRE, el jdk apunte a la carpeta JDK no al JRE C: / Archivos de programa / Java / jdk1.8.0_74


Solo cambia el orden de compilación de las bibliotecas de ruta de tu proyecto. Haga clic con el botón derecho en proyecto> Crear ruta> Configurar ruta de construcción> Seleccionar orden y exportar (pestaña)> Cambiar el orden de las entradas. Espero que mover la "biblioteca del sistema JRE" al final funcione. Funcionó tan para mí. Fácil y simple .... !!!


Supongo que está intentando reemplazar una clase estándar que viene con Java 5 con una en una biblioteca que tiene.

Esto no está permitido según los términos del acuerdo de licencia, sin embargo, AFAIK no se aplicó hasta Java 5.

He visto esto con QName antes y lo "arreglé" quitando la clase del tarro que tenía.

EDITE http://www.manpagez.com/man/1/java/ notas para la opción "-Xbootclasspath:"

"Las aplicaciones que utilizan esta opción con el propósito de anular una clase en rt.jar no deben implementarse, ya que hacerlo infringiría la licencia del código binario de Java 2 Runtime Environment".

El http://www.idt.mdh.se/rc/sumo/aJile/Uppackat/jre/LICENSE

"Restricciones de la tecnología Java. No puede modificar la Interfaz de la plataforma Java (" JPI ", identificada como clases contenidas en el paquete" java "o en ningún subpaquete del paquete" java "), creando clases adicionales dentro de la JPI o causando de otra manera la adición o modificación de las clases en el JPI. En el caso de que cree una clase adicional y una API asociada (s) que (i) amplíe la funcionalidad de la plataforma Java, y (ii) esté expuesta a desarrolladores de software de terceros para Con el propósito de desarrollar software adicional que invoque dicha API adicional, debe publicar rápidamente una especificación precisa para que las API puedan utilizarla de forma gratuita. No puede crear ni autorizar a sus licenciatarios para crear clases adicionales, interfaces o subpaquetes que de cualquier manera se identifican como "java", "javax", "sun" o una convención similar a la especificada por Sun en cualquier designación de convención de denominación ".


También he estado recibiendo este error, pero mi proyecto se basa en la línea de comandos utilizando Maven y el compilador tycho (es un conjunto de complementos OSGi). Después de un montón de tamizar a través de personas que tienen el mismo problema pero que lo solucionaron en Eclipse en lugar de en la línea de comandos, encontré un mensaje en el foro de desarrolladores de Tycho que respondió a mi pregunta, usando la configuración en pom.xml para ignorar la advertencia del compilador sobre el acceso restricción:

<plugin> <groupId>org.eclipse.tycho</groupId> <artifactId>tycho-compiler-plugin</artifactId> <version>${tycho.version}</version> <configuration> <compilerArgument>-warn:+discouraged,forbidden</compilerArgument> </configuration> </plugin>

Puede encontrar más información en las preguntas frecuentes de Tycho . Esto me llevó EDAD al ejercicio, así que pensé que ayudaría a cualquier otra persona que intentara corregir estos errores de restricción de acceso desde la línea de comandos al publicar esta respuesta.


Vaya a la ruta de compilación de Java en las propiedades del proyecto. Elimine la biblioteca del sistema JRE existente y luego agréguela nuevamente, es decir, agregue biblioteca -> JRE Lib - seleccione jre ---> Finalizar. Finalmente, seleccione el orden y la pestaña de exportación seleccione JRE Lib y muévase en la parte superior. Eso es.


http://www.digizol.com/2008/09/eclipse-access-restriction-on-library.html funcionó mejor para mí.

En Windows: Windows -> Preferencias -> Java -> Compilador -> Errores / Advertencias -> API obsoleta y restringida -> Referencia prohibida (reglas de acceso): -> cambiar a advertencia

En Mac OS X / Linux: Eclipse -> Preferencias -> Java -> Compilador -> Errores / Advertencias -> API obsoleta y restringida -> Referencia prohibida (reglas de acceso): -> cambiar a advertencia


  • Vaya a la configuración de la ruta de compilación en las propiedades del proyecto. Windows -> Preferences -> Java Compiler
  • Eliminar la biblioteca del sistema JRE
  • Agrega otro JRE con una "combinación perfecta"
  • Limpia y construye tu proyecto de nuevo. Funcionó para mí.