用jpackage创建.EXE时出现问题-当程序被EXE调用时,jsoup出现问题,但在Intellij中可以



我用Intellij创建了一个使用Javafx、Lucene、JDOM和其他库的应用程序。在Intellij上,所有内容都已成功编译并运行。现在,我将使用jpackage为Windows创建一个运行时映像。现在的问题是添加库。对于Javafx和Lucene,我有模块jar。这些可以很容易地添加。对于JDOM和其他库,我只有普通的jar文件,没有module-info.class

jpackage
--type exe
--app-version 1.0
--module-path %PATH_TO_FX_MOD%
--module-path %PATH_TO_LUCENE_MOD%
--module-path %PATH_TO_JDOM_MOD%
--add-modules javafx.controls,javafx.fxml,javafx.base,javafx.graphics,javafx.media,javafx.swing,javafx.web,org.apache.lucene.core,org.apache.lucene.queryparser,jdom
--copyright "Susanne Krause"
--description "Recipe administration tool with creation, import and administration of recipes"
--name "Susannes Rezeptbuch"
--vendor "Susanne Krause"
--verbose
--win-dir-chooser
--win-menu
--win-shortcut
--dest C:UsersbaerbelRezeptbuch_compiledir2022.0.1bin
--input C:UsersbaerbelRezeptbuch_compiledir2022.0.1jar
--icon C:UsersbaerbelRezeptbuch_compiledirsusannesrezeptbuch.png
--main-jar SusannesRezeptbuch.jar
--main-class com.workingelectrons.susannesrezeptbuch.SusannesRezeptbuch

这是来自jpackage的消息:

jdk.jpackage.internal.PackagerException: jlink failed with: Error: Unable to derive module descriptor for C:Program FilesJavajdom-2.0.6jdom-2.0.6-contrib.jar
java.lang.module.FindException: Unable to derive module descriptor for C:Program FilesJavajdom-2.0.6jdom-2.0.6-contrib.jar

如何将这些模块添加到我的应用程序中?

您将只能从模块中创建jlink运行时映像-从模块路径中省略非模块jar。我还没有检查,但您可能还需要将模块路径合并为一个参数--module-path %PATH_TO_FX_MOD%;%PATH_TO_LUCENE_MOD%;%PATH_TO_JDOM_MOD%

您应该在--input目录结构中包含非模块jar,然后它们将包含在生成的安装中,并作为生成的EXE文件的类路径元素添加。

例如,如果您用剩余的非模块jar设置了文件夹app-imagejars并使用了jpackage --input app-image ...,那么在安装之后,您应该在发布结构中看到类路径jar,每个jar都添加到每个Program FilesYourAppyourlauncher.cfg文件中:

[Application]
app.classpath=$APPDIRjarssome.jar
app.classpath=...

如果您在生成的EXE中仍然有问题,请注意这里提到的问题,并用详细信息编辑您的问题:

  • 显示堆栈跟踪-使用-赢得控制台标志

  • 安装前卸载或修复-应用程序版本,以便更改每个构建

最新更新