按照以下博文解决:
解决JavaFX报错缺少 JavaFX 运行时组件, 需要使用该组件来运行此应用程序-CSDN博客
验证过上文中的方法2和方法3,都能解决,最好是方法2,编译器不会有警告。
方法 2:使用 Java 模块系统
使用 Java 模块系统,建议使用这种方法。这里不详细介绍什么 Java 模块系统以及它的语法,因为这不是本文的重点。构建 Java 模块系统只需要在顶级目录中添加一个模块声明文件 module-info.java。如果读者不知道应该在模块声明文件中编写什么,可以使用 IntelliJ IDEA 来新建一个 JavaFX 项目,然后生成的示例项目中就会有一个简单的 module-info.java 示例。
module com.example.demo {
requires javafx.controls;
requires javafx.fxml;
opens com.example.demo to javafx.fxml;
exports com.example.demo;
}
方法 3:使用引导类
使用一种引导类来代理启动 JavaFX 应用。举个例子,现在笔者将 方法 2 中使用 IntelliJ IDEA 新建的 JavaFX 示例项目中的 module-info.java 删除。此时运行此项目应该会报前述的错误。现在,只需要编写一个引导类调用 JavaFX 入口 main 方法即可消除这个错误。
package com.example.demo;
public class JavaFXBootstrap {
public static void main(String[] args) {
HelloApplication.main(args);
}
}
因为此处没有使用模块系统,所以 Java 运行时会为其自动生成一个匿名的模块系统。可以看到编译器提出了如下警告。
X月 XX, 202X XX:XX:XX XX com.sun.javafx.application.PlatformImpl startup
警告: Unsupported JavaFX configuration: classes were loaded from 'unnamed module @1b3d156e'