¿Restricción de acceso a la clase debido a la restricción de la biblioteca requerida rt.jar?
Estoy intentando compilar el código Java 1.4 creado por WSDL2Java de IBM en Java5 sin volver a crear los códigos auxiliares y vi este error en Eclipse .
Supongo que los códigos auxiliares generados deberían compilarse siempre que el tiempo de ejecución esté disponible (lo están).jars
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 esjavax.xml.namespace.QName
Qué está pasando aquí? ¿Es este un caso en el que estoy intentando refactorizar un cerdo a partir de salchichas? ¿Es mejor recrear los talones?
Hay otra solución que también funciona.
- Vaya a la configuración de Ruta de construcción en las propiedades del proyecto.
- Eliminar la biblioteca del sistema JRE
- Agréguelo nuevamente; Seleccione "Agregar biblioteca" y seleccione la biblioteca del sistema JRE . El valor predeterminado funcionó para mí.
Esto funciona porque tienes varias clases en diferentes archivos jar. Eliminar y volver a agregar la biblioteca JRE 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 frascos diferentes: axis-saaj-1.4.jar
, saaj-api-1.3.jar
y elrt.jar
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
Me encontré con el mismo problema. Encontré la respuesta en el sitio web: http://www.17ext.com .
Primero, elimine las bibliotecas del sistema JRE. Luego, importe nuevamente las bibliotecas del sistema JRE.
Supongo que está intentando reemplazar una clase estándar que se incluye con Java 5 por una de 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é" eliminando la clase del jar que tenía.
EDITAR http://www.manpagez.com/man/1/java/ notas para la opción "-Xbootclasspath:"
"Las aplicaciones que utilizan esta opción con el fin de anular una clase en rt.jar no deben implementarse, ya que hacerlo contravendría la licencia de 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 dentro del paquete "java" o cualquier subpaquete del paquete "java"), creando clases adicionales dentro de la JPI o causando de otro modo la adición o modificación de las clases en el JPI. En el caso de que usted cree una clase adicional y API asociadas que (i) amplíen la funcionalidad de la plataforma Java, y (ii) estén expuestas a desarrolladores de software de terceros para Con el propósito de desarrollar software adicional que invoque dicha API adicional, debe publicar de inmediato una especificación amplia y precisa para dicha API para uso gratuito de todos los desarrolladores. No puede crear ni autorizar a sus licenciatarios a crear clases, interfaces o subpaquetes adicionales que se identifican de alguna manera como "java", "javax", "sun" o una convención similar especificada por Sun en cualquier designación de convención de nomenclatura".
También recibo este error, pero mi proyecto está construido en la línea de comando usando Maven y el compilador tycho (es un conjunto de complementos OSGi). Después de examinar en masa a personas que tenían el mismo problema pero lo solucionaron en Eclipse en lugar de en la línea de comando, encontré un mensaje en el foro de desarrolladores de Tycho que respondió a mi pregunta, usando la configuración pom.xml
para ignorar la advertencia del compilador sobre la restricción de acceso:
<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 tomó AGES para resolverlo, así que pensé que ayudaría a cualquiera que intentara corregir estos errores de restricción de acceso desde la línea de comando publicando esta respuesta.