JavaFX16:不支持的 JavaFX 配置:类 从 'unnamed module @...' 加载

JavaFX16: Unsupported JavaFX configuration: classes were loaded from 'unnamed module @...'

我在 IntelliJ 上有一个 Maven 多模块项目,它生成 3 个 jar,其中 2 个是可执行文件,另一个是公共资源。

其中一个可执行模块有一个 main class,询问用户是否要使用 CLI 或 GUI 启动程序。

运行 这个来自 IntelliJ 的 main 没有问题,而不是当我使用 Maven 制作 jar 时(使用 maven shade):

mvn package -pl myModule -am

然后使用 GUI 选项启动 jar,出现此警告:

com.sun.javafx.application.PlatformImpl startup
WARNING: Unsupported JavaFX configuration: classes were loaded from 'unnamed module @...'

然后 GUI 启动没有问题。

我怎样才能摆脱这个警告? 我的项目的JDK是openJDK 16(我已经添加了module-info.java以便与javafx一起工作),openJFX 16,maven shade plugin 3.2.4,maven compiler plugin 3.8 .1.

如果需要添加更多信息,我会添加它们。

似乎 Maven 正在将 JavaFX 罐子着色到一个单一的胖罐子中。

无法将多个模块着色到同一个 jar 中,因为一个 jar 只能包含 1 个模块。所以,我想 shade 插件通过删除它正在使用的依赖项的模块信息文件来解决这个问题,这意味着 JavaFX 代码不会作为模块加载,你会收到这样的警告。

我认为消除警告的唯一方法是不使用阴影,而是将 JavaFX 模块保留为单独的 jar 文件,然后在 运行 应用程序时将其放在模块路径中。