Estoy intentando compilar el código Java 1.4 creado por WSDL2Java de IBM en Java5 sin volver a crear los apéndices y vi este error en Eclipse .
Supongo que los apéndices 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 es javax.xml.namespace.QName
Qué está pasando aquí? ¿Es este un caso en el que estoy tratando de refactorizar un cerdo de salchichas? ¿Estoy mejor recreando los trozos?
Respuestas:
Hay otra solución que también funciona.
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í que tengo:
javax.xml.soap.SOAPPart
en tres frascos diferentes:axis-saaj-1.4.jar
,saaj-api-1.3.jar
y elrt.jar
fuente
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
fuente
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, vuelva a importar las bibliotecas del sistema JRE.
No sé por qué. Sin embargo, solucionó mi problema, espero que pueda ayudarlo.
fuente
Supongo que está tratando de reemplazar una clase estándar que se envía con Java 5 con una en la biblioteca que tiene.
Esto no está permitido según los términos del acuerdo de licencia, sin embargo, AFAIK no se hizo cumplir 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 usan 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 Java 2 Runtime Environment".
El http://www.idt.mdh.se/rc/sumo/aJile/Uppackat/jre/LICENSE
"Restricciones de tecnología Java. No puede modificar la interfaz de la plataforma Java (" JPI ", identificada como clases contenidas en el paquete" java "o cualquier subpaquete del paquete" java "), creando clases adicionales dentro del JPI o causando adición o modificación de las clases en el JPI. En el caso de que cree una clase adicional y API (s) 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 rápidamente y de manera amplia una especificación precisa para dicha API para uso gratuito de todos los desarrolladores. No puede crear ni autorizar a sus licenciatarios para crear clases adicionales, interfaces,o subpaquetes que de alguna manera se identifican como "java", "javax", "sun" o convención similar a la especificada por Sun en cualquier designación de convención de nomenclatura ".
fuente
También recibí este error, pero mi proyecto se basa en la línea de comandos usando Maven y el compilador tycho (es un conjunto de complementos OSGi). Después de una gran cantidad de personas que tienen el mismo problema pero que lo arreglaron en Eclipse en lugar de en la línea de comando, encontré un mensaje en el foro de desarrolladores de Tycho que respondió mi pregunta, usando la configuración
pom.xml
para ignorar la advertencia del compilador sobre la restricción de acceso:Puede encontrar más información en las Preguntas frecuentes de Tycho . Esto me llevó a EDADES para trabajar, así que pensé que ayudaría a cualquier otra persona que intentara solucionar estos errores de restricción de acceso desde la línea de comandos publicando esta respuesta.
fuente
Windows -> Preferences -> Java Compiler
fuente
Acabo de tener este problema también. Aparentemente configuré el JRE en 1.5 en lugar de 1.6 en mi ruta de compilación.
fuente
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 el primero en la lista.Jugando con estos diales, junto con ejecutar Proyecto> Limpiar en el medio, pude resolver estas advertencias.
fuente
para mí así lo resuelvo:
bajo bibliotecas
Nota: asegúrese de que en Eclipse / Preferencias (NO el proyecto) / Java / JRE instalado, que el jdk apunte a la carpeta JDK, no al JRE C: \ Archivos de programa \ Java \ jdk1.8.0_74
fuente
Perdón por actualizar una vieja POST. Recibí el problema informado y lo resolví como se indica a continuación.
Suponiendo que está utilizando Eclipse + m2e maven plugin, si obtiene este error de restricción de acceso, haga clic derecho en el proyecto / módulo en el que tiene el error -> Propiedades -> Ruta de compilación -> Biblioteca -> Reemplazar JDK / JRE al que se usa en el espacio de trabajo de eclipse.
Seguí los pasos anteriores y el problema está resuelto.
fuente
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) pero contenido diferente y se eclipsan entre sí (generalmente una antigua costumbre build jar contiene una versión anterior incorporada de una biblioteca de terceros).
Por ejemplo, cuando agrega una implementación jar:
pero también una versión anterior que solo implementa:
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 resulta "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 tenga la implementación correcta vaya primero.
fuente
Vaya a Java Build Path en las propiedades del proyecto. Elimine la biblioteca del sistema JRE existente. Luego, agréguela nuevamente, es decir, Agregar biblioteca -> JRE Lib - seleccione jre ---> Finalizar. Por último, seleccione el orden y la pestaña de exportación, seleccione JRE Lib y avance en la parte superior. Eso es.
fuente
Simplemente cambie el orden de las bibliotecas de ruta de compilación de su proyecto. Haga clic con el botón derecho en proyecto> Ruta de compilación> Configurar ruta de compilación> Seleccionar orden y exportar (pestaña)> Cambiar el orden de las entradas. Espero que mover la "biblioteca del sistema JRE" al fondo funcione. Funcionó así para mí. Fácil y simple ... !!!
fuente
En mi caso, hubo una falta de coincidencia entre la ruta de compilación JRE y 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 desapareció la advertencia.
fuente
Agregar un sistema JRE correcto a través de la ruta de compilación es la solución, pero su eclipse aún puede tener el error. Para resolver eso, vaya a Ruta de compilación de Java -> Ordenar y exportar y mueva su biblioteca del sistema JRE en la parte superior. Esto ha resuelto mi problema.
fuente