我在使用Jpackage时遇到了一些问题,包括Controlsfx。
我使用Maven Central的原型在IntelliJ中使用JavaFX建立了一个项目。在IntelliJ中与JavaFX配合良好。我可以用Maven(来自IntelliJ)打包它,并使用JPackage制作一个exe-installer,这也很好。我在JPackage中使用这个命令:
jpackage --input C:\...\target --add-modules javafx.controls --module-path C:\...\openjfx-20.0.1_windows-x64_bin-jmods\javafx-jmods-20.0.1 --module-path --win-console --dest c:\outputs --main-jar tests-1.0-SNAPSHOT.jar --main-class tests.App
现在我想合并ControlsFX,所以我从Maven下载ControlsFX.JAR:https://mvnrepository.com/artifact/org.controlsfx/controlsfx/11.1.2IntelliJ在IntelliJ中,我将其作为模块添加。一切都很好,我想在我的项目中使用ControlsFX。
现在我想创建一个exe-installer(就像上面没有ControlsFX的情况一样),所以我将ControlsFX添加到我的JPackage命令中:
jpackage --input C:\...\target --add-modules javafx.controls,controlsfx --module-path C:\...\openjfx-20.0.1_windows-x64_bin-jmods\javafx-jmods-20.0.1 --module-path C:\..\controlsfx --win-console --dest c:\test --main-jar tests-1.0-SNAPSHOT.jar --main-class tests.App
当运行命令时,我得到了这个:
java.lang.module.FindException:未找到模块controlsfx
我知道我的问题与我传递给JPackage的命令有关,但不知道是什么。
1条答案
按热度按时间qgelzfjb1#
jpackage
命令将在内部使用jlink
构建一个运行时映像,其中包含列出的所有模块。为此,它必须访问模块定义controlsfx.jmod
而不是jar。如果你没有jmod文件,那么你可以将controlfx.jar复制到你的目标版本结构中的
--input
目录下。然后,它将作为一个类路径jar依赖项(在发布目录中)而不是作为一个模块依赖项(在运行时映像中)。您可以通过查看生成的
project.cfg
来检查jar是否添加到类路径中,它应该包含一行: