在 Jdk8 中,运行和调试 JavaFx 毫无难度,和平常的 Java 程序没有什么区别,但是,从 Jdk11 开始,JavaFx 作为独立模块从 Jdk 中分离了出来,运行和调试(尤其是调试)变得不那么容易,因此,博主在经历一番探索后,找到了一种十分简单的基于IDEA + Maven + JDK11运行和调试 JavaFx 程序的方法。
新建 Maven 项目
-
在 IDEA 中新建项目,选择
Maven,勾选Create from archetype,选择javafx-maven-archetypes,如果没有,选择Add archetype添加,参数设置为:- GroupId:
org.openjfx - artifactId:
javafx-maven-archetypes - version:
0.0.5选择后点击next。
- GroupId:
-
设置项目名称、保存位置、
GroupId、ArtifactId和Version -
设置
archetype artifactId,有两个可选项:javafx-archetype-fxml和javafx-archetype-simple,表示是否添加 fxml 支持,在这里我选取javafx-archetype-simple,然后新建javafx-version属性,定义为 15.0.1 -
点击 finish,等待下载
-
生成的 pom 文件为Here
-
module-info文件是 Java9 引入的模块化系统,如下所示module com.civitasv { requires javafx.controls; exports com.civitasv; } -
如果添加 fxml 支持,则需要添加
java-fxml依赖并在 module-info 文件中添加:requires javafx.fxml; opens com.civitasv.controller to javafx.fxml;注:这是因为 FXML 类使用反射机制调用项目中的 controller,具体请查阅 Java 模块化机制。
运行和调试
此时可以直接点击运行和调试App。
运行结果如下:
总结
创建 Java 模块化项目就可以了,不过还不知道其中的深层次原因。