
JavaFX 警告:不支持的 JavaFX 配置:从“未命名模块 @...”加载类
问题:
安装并运行 JavaFX 时,用户会遇到一条警告,指出“不支持的 JavaFX 配置:类已从'unnamed module @...'."
背景:
此警告源于 Java 9 中引入的 Java 平台模块系统 (JPMS)。模块必须从模块路径加载为“命名模块”,而不是class-path.
解决方案:
解决此问题:
- 确保 JavaFX 位于模块路径上: 使用 --module-path 选项将 JavaFX 添加到模块路径。
- 将 JavaFX 解析为命名模块: 对于非模块化应用程序,使用 --add-modules 选项强制 Java 将 JavaFX 模块解析为命名模块。
- 模块化应用程序: 使用 --module选项将应用程序作为模块启动,并在模块信息描述符中使用适当的 require 指令。
- 将 JDK 发行版与 JavaFX 结合使用: 安装 JDK 发行版包括 JavaFX,例如 BellSoft Liberica JDK 或 Azul Zulu JDK,自动将 JavaFX 作为命名模块加载。
- 忽略警告: 从 JavaFX 21 开始,可以选择忽略警告,但使用不受支持的配置可能会导致未来issues.
部署:
- 要求客户端安装 JavaFX 的 JRE: 确保客户端安装 JavaFX 的 JRE .
- 分发独立应用程序: 使用工具创建独立应用程序例如 jlink 或本机映像,将应用程序、库和 JRE 捆绑在一起。
- 可执行“Fat”JAR 文件: 将 JavaFX 和所有依赖项嵌入到可执行 JAR 文件中。但是,这种方法隐式不受支持,因为它从未命名的模块加载 JavaFX。