0

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

其中一个可执行模块有一个主类,询问用户是否想使用 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 插件 3.2.4、maven 编译器插件 3.8.1。

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

4

1 回答 1

2

似乎 maven 正在将 JavaFX jar 着色为单个胖 jar。

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

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

于 2021-05-29T13:43:10.330 回答