Cuando intento usar clases relacionadas con javafx en mi nuevo proyecto java 8, obtengo un error de restricción de acceso de eclipse. Hasta ahora, la única 'solución' que he podido encontrar es decirle a eclipse que ignore la restricción de acceso, pero no estoy satisfecho con eso. Un ejemplo del error:
Access restriction: The type Pane is not accessible due to
restriction on required library C:\Program Files\Java\jre8_0\lib\ext\jfxrt.jar
Estoy usando Eclipse Kepler con el parche Eclipse JDT para java 8.
Este parece ser un problema relacionado con el hecho de que JavaFX no es parte del entorno de ejecución de JavaSE.
Ahora estoy muy confundido ya que, según http://en.wikipedia.org/wiki/JavaFX, javaFX es parte de JavaSE. ¿Es posible que Eclipse no reconozca que es parte de javaSE?
Respuestas:
Desde el punto de vista de Eclipse, el error es totalmente correcto porque JavaFX proviene de la classpath de extensión y no está disponible en TODAS las máquinas virtuales Java8 (por ejemplo, ibm!).
Como se describe, puede suprimir esas advertencias agregando reglas de acceso o en mi humilde opinión, la mejor solución es instalar e (fx) clipse, que lo hace automáticamente por usted y, además, incluso le proporciona herramientas para JavaFX CSS y FXML.
Puede obtener un paquete todo en uno desde http://efxclipse.bestsolution.at/install.html
fuente
Voy a agregar una respuesta más aquí, solo para proporcionar lo que creo que es el enfoque más mínimo. En mi configuración de Eclipse, tengo instalado e (fx) clipse, que proporciona una solución para esto, además de proporcionar muchas características de desarrollo útiles que seguramente querrá si está escribiendo aplicaciones JavaFX. Este es probablemente el enfoque más práctico. Si por alguna razón no desea ese complemento, la solución descrita en esta respuesta solucionará el problema con la menor cantidad de otros efectos secundarios.
Como se señaló en otras respuestas, Eclipse, de forma predeterminada, no permite el acceso a clases en archivos jar en el directorio jre / lib / ext, ya que no se garantiza que estén presentes en todas las plataformas Java. Si está escribiendo una aplicación JavaFX 8, está asumiendo que está en una plataforma donde jfxrt.jar está disponible en la ubicación lib / ext.
Entonces, la solución mínima para esto es permitir el acceso a las clases en este archivo jar (y solo en este archivo jar). Para hacer esto, haga clic derecho en el proyecto y abra el diálogo de propiedades del proyecto. Seleccione "Crear ruta" en el panel izquierdo y seleccione la pestaña "Bibliotecas". Verá una entrada "Biblioteca del sistema JRE". Expanda esa entrada y verá una subentrada "Reglas de acceso":
Seleccione la entrada "Reglas de acceso" y haga clic en "Editar". Haga clic en "Agregar".
En "Resolución", elija "Accesible" y, en "Patrón de regla", ingrese
javafx/**
:Haga clic en Aceptar para salir de todos los cuadros de diálogo.
Esta configuración permitirá el acceso a todas las clases en cualquier paquete que comience
javafx.
, pero conservará la regla en la carpeta ext para todas las demás clases, y es "mínima" en ese sentido.Nuevamente, lo que probablemente quieras hacer es instalar el complemento e (fx) clipse, pero que yo sepa, esta es la solución con menos efectos secundarios en tu configuración de Eclipse.
fuente
e(fx)clipse is providing many useful development features
. Se ha agregado un nuevo elementoSashPane
que soluciona algunosSliderPane
problemas en e (fx) clipse 2.6 pero realmente no puedo entenderlo. ¿Hay clases que podamos usar de e (fx) clipse? No puedo encontrar nada similar. Quiero decir que no puedo acceder a ninguna clase o encontrar algo útil que pueda usar dentro del programa, como biblioteca, me refiero. Corríjame porque sé que estoy en algún lugar equivocado aquí ... :)Resolví el problema eliminando y leyendo el JDK en la ruta de compilación. Sin embargo, no me preguntes por qué funciona esto.
fuente
La forma más fácil es instalar e (fx) clipse, un complemento para que Eclipse admita JavaFX:
La información original se puede encontrar aquí: https://www.eclipse.org/efxclipse/install.html#for-the-lazy
fuente
Resolví este problema mediante un uso cuidadoso de la ruta de construcción del proyecto Eclipse.
Lo que esto hace es hacer que Eclipse vea el jfxrt.jar como un archivo JAR normal de terceros. El orden es importante para que tenga prioridad sobre la entrada en la biblioteca del sistema JRE. Es el mismo archivo JAR real, pero Eclipse lo ve de manera diferente.
Es posible que desee modificar las configuraciones de ejecución para que no utilice la versión 'Exportada' de jfxrt.jar; sin embargo, en términos prácticos, esto no marcará la diferencia.
He hecho esto con Java8 y Eclipse Luna; pero estoy seguro de que el principal trabajaría con cualquier combinación de Java y Eclipse.
fuente
en Bibliotecas
Nota: asegúrese de que en Eclipse / Preferences (NO el proyecto) / Java / JRE instalado, el jdk apunta a la carpeta JDK, no al JRE C: \ Program Files \ Java \ jdk1.8.0_74
fuente
Sé que esto ya ha sido respondido, pero encuentro que las soluciones propuestas son torpes.
Otra opción
En la versión 'Mars' (y posiblemente versiones anteriores) puede desactivar los errores de restricciones de acceso. Debajo
Java-> Compilador-> Vista Errores / Advertencias
y
"API obsoleta y restringida"
puede configurar "Referencia prohibida (regla de acceso)" para ignorarla.
fuente
Sigue estos pasos:
Agregue jfxrt.jar (de su carpeta de instalación) como un "archivo JAR externo" en la pestaña 'Bibliotecas'.
En la pestaña 'Pedido / Exportar', asegúrese de que este jfxrt.jar sea el primero en la lista.
Esto funcionó para mí.
fuente
Yo tuve el mismo problema. Usé la solución de James_D pero su solución exacta no funcionó para mí. Pero usar en
**/javafx/**
lugar dejavafx/**
resolvió el problema por mí. Espero que ayude.PD: Publicaría esto como un comentario bajo la solución de James_D, pero me acabo de registrar y no tenía suficiente "reputación" para hacerlo.
fuente
Como James_D ya sugirió, agregué reglas de acceso a mi archivo classpath. Desinstalé el complemento e (fx) clipse por el momento porque tiene un error de validación de CSS (consulte ¿Cómo deshabilitar la advertencia de CSS "Propiedad desconocida" en Eclipse Mars? ).
Aquí está mi entrada en el archivo classpath para el contenedor JRE:
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"> <attributes> <attribute name="maven.pomderived" value="true"/> </attributes> <accessrules> <accessrule kind="accessible" pattern="javafx/**"/> <accessrule kind="accessible" pattern="com/sun/javafx/**"/> </accessrules> </classpathentry>
fuente
Paso 1: Navegue a su jfxrt.jar. C: \ Archivos de programa \ Java \ jre1.8.0_111 \ lib \ ext
Paso 2 Copie el archivo jfxrt.jar
Paso 3: Vaya a Eclipse, cree una nueva carpeta como esta: [Creando el nombre de carpeta lib para poner nuestro archivo jfxrt.jar] [2] [2]: https://i.stack.imgur.com/YsJ5S.png
Paso 4: Seleccione la carpeta lib y presione CTRL + V para pegar jfxrt.jar [Pegue su jfxrt.jar] [1] [1]: https://i.stack.imgur.com/Ljogu.png
Paso 5: Haga clic derecho en jfxrt.jar y establezca como Ruta de compilación.
fuente