tutorial - Eclipse muestra una advertencia sobre la restricción de acceso para las clases jfxrt.jar
maven compiler plugin java 8 (5)
Estoy usando eclipse kepler con java SE 1.8 jdk system library pero cuando uso alguna clase o método javafx eclipse da una advertencia como Access restriction: The type ''TableColumn<?,?>'' is not API (restriction on required library ''C:/Program Files/Java/jdk1.8.0_05/jre/lib/ext/jfxrt.jar'')
.
He intentado agregar una regla de acceso a la biblioteca del sistema para permitir el acceso a todos los archivos en la biblioteca usando el comodín *
pero la advertencia sigue ahí. También estoy utilizando maven para proyecto de construcción. El código funciona pero la advertencia es molesta y está afectando la legibilidad a medida que codifico. Cualquier ayuda es apreciada.
Edición: También intenté agregar @SuppressWarnings("restriction")
al comienzo de mis clases, pero esto todavía no resuelve la causa desconocida y oculta todas las demás advertencias de restricción que puedo necesitar ver.
Agrega una regla de acceso para javafx
.
Haga clic derecho en su proyecto> Propiedades> Java Build Path> pestaña Bibliotecas, luego:
- Expandir la biblioteca del sistema JRE
- seleccione Reglas de acceso, haga clic en el botón
Edit...
- haga clic en
Add...
- Elija Resolución:
Accessible
- Establecer patrón de regla:
javafx/**
- haga
OK
enOK
- haga
OK
enOK
Agregue una regla de acceso para permitir el acceso a javafx/**
.
Consulte también esta respuesta: https://.com/a/32062263/1060350
Por lo que puedo decir, este es un error en Eclipse en mi opinión. Tampoco pude encontrar una manera de configurar esto globalmente en Eclipse, pero necesita rehacerlo para cada proyecto.
Vaya a la configuración del proyecto, ruta de compilación, bibliotecas, JRE. Haga clic en "Reglas de acceso" que debería tener "No hay reglas definidas" normalmente. Agregue una nueva regla: "Accesible" e ingrese el patrón " javafx/**
".
Esto le dice al compilador Java de Eclipse que javafx.*
Es una API oficial que se le permite usar, por lo que la advertencia desaparece.
Claramente, permitir el acceso a javafx solo es mucho mejor que ignorar la advertencia.
La razón por la que *
no funcionó es porque no leyó la definición de comodín. En las reglas de acceso, *
solo coincide una vez, necesita **
coincidir en cualquier profundidad. Es decir, *
permitirá el acceso a javafx.SomeClass
pero no a javafx.scene.SomeClass
...
La forma más fácil es instalar e (fx) clipse, un complemento para Eclipse que admite JavaFX:
- Seleccione Ayuda -> Instalar nuevo software
- Haga clic en el botón Agregar para agregar el siguiente sitio:
- Nombre: efxclipse
- Ubicación: http://download.eclipse.org/efxclipse/updates-released/1.2.0/site
- Haga clic en Aceptar
- En la lista desplegable "Trabajar con", seleccione el sitio recientemente agregado "efxclipse"
- Marque la casilla de verificación "e (fx) clipse - instalar" para instalar todos los componentes de esta selección
- Pasar a los siguientes pasos para finalizar la instalación.
- Reinicie su Eclipse. Si aún no reconoce la biblioteca JavaFX, reinícielo de nuevo.
La información original se puede encontrar aquí: https://www.eclipse.org/efxclipse/install.html#for-the-lazy
Puedes elegir ignore
en las siguientes configuraciones:
Windows -> Preferences -> Java -> Compiler -> Errors/Warnings
(Project) Properties -> Java Compiler -> Errors/Warnings
Utilice el filtro para encontrar "Forbidden reference"
Forbidden reference (access rules)
: cámbiela a " ignore
"