在 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 模块化项目就可以了,不过还不知道其中的深层次原因。