java javafx javafx-11

IntelliJ IDEA-Error: faltan componentes de tiempo de ejecución de JavaFX y son necesarios para ejecutar esta aplicación



javafx-11 (1)

Esta pregunta ya tiene una respuesta aquí:

Estoy ejecutando IntelliJ IDEA Ultimate 2018.2.5 con JDK 11.0.1 y JavaFX 11 desde OpenJFX . Sé que es un error común y probé muchos de los arreglos propuestos, pero nada funciona.

No importa el proyecto JavaFX que intente ejecutar, aparece el error:

Error: JavaFX runtime components are missing, and are required to run this application

Si agrego lo siguiente a las opciones de VM

--module-path="C:/Program Files/Java/javafx-sdk-11/lib" --add-modules=javafx.controls

Me sale estos errores:

Exception in Application start method java.lang.reflect.InvocationTargetException at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:464) at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:363) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at java.base/sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:1051) Caused by: java.lang.RuntimeException: Exception in Application start method at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:900) at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:195) at java.base/java.lang.Thread.run(Thread.java:834) Caused by: java.lang.IllegalAccessError: class com.sun.javafx.fxml.FXMLLoaderHelper (in unnamed module @0x5fce9dc5) cannot access class com.sun.javafx.util.Utils (in module javafx.graphics) because module javafx.graphics does not export com.sun.javafx.util to unnamed module @0x5fce9dc5 at com.sun.javafx.fxml.FXMLLoaderHelper.<clinit>(FXMLLoaderHelper.java:38) at javafx.fxml.FXMLLoader.<clinit>(FXMLLoader.java:2056) at sample.Main.start(Main.java:13) at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$9(LauncherImpl.java:846) at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runAndWait$12(PlatformImpl.java:455) at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$10(PlatformImpl.java:428) at java.base/java.security.AccessController.doPrivileged(Native Method) at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$11(PlatformImpl.java:427) at javafx.graphics/com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:96) at javafx.graphics/com.sun.glass.ui.win.WinApplication._runLoop(Native Method) at javafx.graphics/com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java:174) ... 1 more Exception running application sample.Main

Traté de reinstalar sin ningún tipo de suerte. También he intentado cambiar getClass().getResource(...) por getClass().getClassLoader().getResource(...) o algo como Parent root = FXMLLoader.load(getClass().getResource("/sample.fxml")); Pero todavía no funciona.


Hay preguntas similares como this o esta otra.

Antes de JavaFX 11, cada vez que llamaba algo relacionado con JavaFX, tenía todos los módulos javafx disponibles dentro del SDK.

Pero ahora tienes que incluir los módulos / dependencias que necesitas.

Su error dice que está utilizando FXML pero no se puede resolver, pero acaba de agregar el módulo javafx.controls :

--add-modules=javafx.controls

Como puede ver en el javafx.controls módulo javafx.controls depende de javafx.graphics y java.base , pero ninguno de esos módulos incluye las clases FXML.

Si necesita clases FXML como FXMLLoader , debe incluir el módulo javafx.fxml :

--module-path="C:/Program Files/Java/javafx-sdk-11/lib" / --add-modules=javafx.controls,javafx.fxml

Lo mismo se aplicará si necesita medios o webkit, esos tienen sus propios modules .