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


Estoy intentando compilar el código Java 1.4 que fue creado por WSDL2Java de IBM en Java5 sin volver a crear los stubs y vi este error en Eclipse. Estoy bajo la suposición de que los stubs creados deberían compilarse siempre que los tarros de tiempo de ejecución estén disponibles (lo son).

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 de clase completo es javax.xml.namespace.QName

Qué está pasando aquí?

¿Es este un caso en el que estoy tratando de refactorizar un cerdo de salchichas? ¿Será mejor que vuelva a crear los talones?


783
2018-05-13 20:16


origen


Respuestas:


Hay otra solución que también funciona.

  1. Ve a la Construir camino configuración en las propiedades del proyecto.
  2. Eliminar el Biblioteca del sistema JRE
  3. Agregarlo de nuevo; Seleccionar "Agregar biblioteca" y selecciona el Biblioteca del sistema JRE. El valor predeterminado funcionó para mí.

Esto funciona porque tienes múltiples clases en diferentes archivos jar. Al eliminar y volver a agregar JRE lib, las clases correctas serán 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 jarras diferentes: axis-saaj-1.4.jar, saaj-api-1.3.jar y el rt.jar


1804
2018-02-01 04:09



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


113
2018-01-16 03:21



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 las bibliotecas del sistema JRE nuevamente.

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


66
2017-11-23 05:55



Supongo que está intentando reemplazar una clase estándar que se envía con Java 5 por una en la 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 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 para reemplazar una clase en rt.jar no deben implementarse, ya que esto contravendría la licencia de código binario de Java 2 Runtime Environment".

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

"Restricciones de tecnología Java. No puede modificar Java Interfaz de plataforma ("JPI"), identificadas como clases contenidas dentro del paquete "java" o cualquier subpaquete de la "java" paquete), mediante la creación de clases adicionales dentro de la JPI o de lo contrario, causar la adición o modificación de la clases en el JPI. En el caso de que crees un clase adicional y API asociada que (i) se extiende la funcionalidad de la plataforma Java, y (ii) está expuesta a los desarrolladores de software de terceros con el fin de desarrollando software adicional que invoca tales API adicional, debe publicar rápidamente una especificación precisa para tal API para uso libre por todos desarrolladores. No puede crear ni autorizar su licenciatarios para crear, clases adicionales, interfaces o subpaquetes que de alguna manera se identifican como "java", "javax", "sun" o convención similar especificada por Sun en cualquier designación de convención de nombres ".


34
2018-05-13 20:30



También he recibido este error, pero mi proyecto se basa en la línea de comandos usando Maven y el Tycho compilador (es un conjunto de complementos OSGi). Después de analizar un montón de personas que tienen el mismo problema pero arreglarlo 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 en pom.xml 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>

Se puede encontrar más información en Preguntas frecuentes sobre Tycho. Esto me tomó un par de años para funcionar, así que pensé que ayudaría a cualquier persona que intente arreglar estos errores de restricción de acceso desde la línea de comando publicando esta respuesta.


23
2017-09-06 12:31



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

13
2018-03-31 19:09



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


13
2017-07-01 09:46



Además de La solución de Nels Beckman, Tengo los siguientes consejos:

Debajo Configurar la ruta de compilación, Tuve que reorganizar el orden de mis entradas en Orden y Exportación.

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 correr Proyecto> Limpio en el medio, pude resolver estas advertencias.


8
2018-06-01 03:41



Perdón por actualizar un antiguo POST. Recibí el problema informado y lo resolví como se indica a continuación.

Suponiendo que está utilizando el plugin Eclipse + m2e maven, si obtiene este error de restricción de acceso, haga clic con el botón 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 se resuelve.


6
2018-05-24 10:51



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

Por ejemplo, cuando agrega una implementación de jar:

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

pero también una versión anterior que implementa 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 "anterior" eclipsa a la nueva: d2 de repente resulta "faltante o inaccesible" incluso cuando está allí.

La solución es verificar el orden de las librerías en tiempo de compilación y asegurarse de que el que tiene la implementación correcta vaya primero.


5
2018-04-01 15:18



para mí esto como lo resuelvo:

  • Ve a la Construir camino del proyecto actual

bajo Bibliotecas

  • Selecciona el "Biblioteca del sistema JRE [jdk1.8xxx] "
  • hacer clic editar
  • y seleccione "Área de trabajo JRE predeterminada (jdk1.8xx)" O JRE alternativo
  • Haga clic en finalizar
  • Haga clic en Aceptar

enter image description here

Nota: asegúrese de que en Eclipse / Preferences (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

enter image description here


5
2018-03-20 18:40