IntelliJ no puede reconocer JavaFX 11 con OpenJDK 11
intellij-idea java-11 (3)
Como se mencionó en los comentarios, la Guía de inicio es el lugar para comenzar con Java 11 y JavaFX 11.
La clave para trabajar como lo hizo antes de Java 11 es entender que:
- JavaFX 11 ya no es parte del JDK
- Puede obtenerlo en diferentes versiones, ya sea como un SDK o como dependencias regulares (maven / gradle).
- Deberá incluirlo en la ruta del módulo de su proyecto, incluso si su proyecto no es modular.
Proyecto JavaFX
Si creas un proyecto predeterminado JavaFX normal en IntelliJ (sin Maven o Gradle), te sugiero que descargues el SDK desde here . Tenga en cuenta que también hay jmods, pero para un proyecto no modular se prefiere el SDK.
Estos son los pasos fáciles para ejecutar el proyecto predeterminado:
- Crear un proyecto JavaFX
- Establezca JDK 11 (apunte a su versión local de Java 11)
-
Agregue el SDK de JavaFX 11 como una biblioteca.
La URL podría ser algo como
/Users/<user>/Downloads/javafx-sdk-11/lib/
. Una vez que haga esto, notará que las clases de JavaFX ahora se reconocen en el editor.
-
Antes de ejecutar el proyecto predeterminado, solo tiene que agregarlos a las opciones de VM:
--module-path /Users/<user>/Downloads/javafx-sdk-11/lib --add-modules=javafx.controls,javafx.fxml
-
correr
Maven
Si usas Maven para construir tu proyecto, sigue estos pasos:
- Crea un proyecto Maven con el arquetipo de JavaFX.
- Establezca JDK 11 (apunte a su versión local de Java 11)
-
Agregue las dependencias de JavaFX 11.
<dependencies> <dependency> <groupId>org.openjfx</groupId> <artifactId>javafx-controls</artifactId> <version>11</version> </dependency> <dependency> <groupId>org.openjfx</groupId> <artifactId>javafx-fxml</artifactId> <version>11</version> </dependency> </dependencies>
Una vez que haga esto, notará que las clases de JavaFX ahora se reconocen en el editor.
Notará que Maven gestiona las dependencias necesarias para usted: agregará javafx.base y javafx.graphics para javafx.controls, pero lo más importante, agregará el clasificador requerido según su plataforma. En mi caso, Mac.
Esta es la razón por la que sus jars
org.openjfx:javafx-controls:11
están
vacíos
, porque hay tres clasificadores posibles (plataformas Windows, Linux y Mac), que contienen todas las clases y la implementación nativa.
En caso de que aún quieras ir a tu repositorio .m2 y tomar las dependencias de allí manualmente, asegúrate de elegir la correcta (por ejemplo
.m2/repository/org/openjfx/javafx-controls/11/javafx-controls-11-mac.jar
)
-
Reemplace los plugins de maven por defecto con los de here .
-
Ejecute
mvn compile exec:java
, y debería funcionar.
Trabajos similares también para proyectos Gradle, como se explica en detalle here .
EDITAR
La guía de introducción mencionada contiene documentation actualizada y proyectos de muestra para IntelliJ:
-
JavaFX 11 sin Maven / Gradle, vea ejemplos de muestra no modular o proyectos de muestra modular .
-
JavaFX 11 con Maven, vea ejemplos de muestra no modular o proyectos de muestra modular .
-
JavaFX 11 con Gradle, vea ejemplos de muestra no modular o proyectos de muestra modular .
Tengo problemas para que IntellJ reconozca los paquetes de JavaFX. Con un nuevo proyecto JavaFX, con OpenJDK 11, cuando se intenta construir el proyecto, IntelliJ no puede reconocer los paquetes de JavaFX.
He importado
openjfx:javafx-base-11
desde el repositorio de Maven.
He analizado otras preguntas y las soluciones parecen ir desde la comprobación de que el bytecode esté en el nivel correcto (el mío es) y que el idioma del proyecto sea el correcto (el mío).
¿Alguien tiene alguna idea?
Editar:
Error:
El problema de que Java FX ya no forma parte de JDK 11. La siguiente solución funciona con IntelliJ (no lo he probado con NetBeans):
-
Agregue JavaFX Global Library como una dependencia:
Configuraciones -> Estructura del proyecto -> Módulo. En el módulo, vaya a la pestaña Dependencias y haga clic en el signo "+" para agregar -> Biblioteca -> Java -> elija JavaFX de la lista y haga clic en Agregar selección, luego en Aplicar configuración.
-
Haga clic con el botón derecho en el archivo fuente (src) en su proyecto JavaFX y cree un nuevo archivo module-info.java . Dentro del archivo escribe el siguiente código:
module YourProjectName { requires javafx.fxml; requires javafx.controls; requires javafx.graphics; opens sample;}
Estos 2 pasos resolverán todos tus problemas con JavaFX, te lo aseguro.
Referencia: Hay un tutorial de You Tube realizado por el canal de programación Learn, que explicará todos los detalles anteriores en solo 5 minutos. También recomiendo verlo para resolver su problema: https://www.youtube.com/watch?v=WtOgoomDewo
Nada de lo anterior funcionó para mí. Pasé demasiado tiempo despejando otros errores que surgieron. Encontré que esta es la forma más fácil y la mejor.
¡Esto funciona para obtener JavaFx en Jdk 11, 12 y en OpenJdk12 también!
- El video te muestra la descarga de JavaFx Sdk
- Cómo configurarlo como una biblioteca global
- Configurar el módulo - info.java (prefiero el de abajo)
module thisIsTheNameOfYourProject {
requires javafx.fxml;
requires javafx.controls;
requires javafx.graphics;
opens sample;
}
Toda la cosa me tomó solo 5mins !!!