java 带ControlsFX的Jpackage

emeijp43  于 2023-05-21  发布在  Java
关注(0)|答案(1)|浏览(110)

我在使用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的命令有关,但不知道是什么。

qgelzfjb

qgelzfjb1#

jpackage命令将在内部使用jlink构建一个运行时映像,其中包含列出的所有模块。为此,它必须访问模块定义controlsfx.jmod而不是jar。
如果你没有jmod文件,那么你可以将controlfx.jar复制到你的目标版本结构中的--input目录下。然后,它将作为一个类路径jar依赖项(在发布目录中)而不是作为一个模块依赖项(在运行时映像中)。
您可以通过查看生成的project.cfg来检查jar是否添加到类路径中,它应该包含一行:

app.classpath=$APPDIR\whateverplaceunder--input.dir\controlsfx.jar

相关问题