提问者:小点点

创建问题。jpack的EXE-当程序被EXE调用时jSoup的问题,但在Intellij中可以


我用Intellij创建了一个使用Javafx、Lucene、JDOM和其他库的应用程序。在Intellij上,一切都编译并成功运行。现在我要使用jpack为Windows创建一个运行时映像。现在的问题是添加库。对于Javafx和Lucene,我有module-jar。这些可以很容易地添加。对于JDOM和其他库,我只有普通的jar文件,没有module-info. class。在那里,我从jpack中得到错误:

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:\Users\baerbel\Rezeptbuch_compiledir\2022.0.1\bin
  --input C:\Users\baerbel\Rezeptbuch_compiledir\2022.0.1\jar
  --icon C:\Users\baerbel\Rezeptbuch_compiledir\susannesrezeptbuch.png
  --main-jar SusannesRezeptbuch.jar
  --main-class com.workingelectrons.susannesrezeptbuch.SusannesRezeptbuch

这是来自jpack的消息:

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

我可以做些什么来将这些类型的模块添加到我的应用程序中?


共1个答案

匿名用户

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

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

例如,如果您使用剩余的非模块jar设置文件夹app-image\jars并使用jpacke-input app-image…,那么安装后您应该会在发布结构中看到类路径jar,并且每个都添加到每个\Program Files\YourApp\yourLauncher. cfg文件中:

[Application]
app.classpath=$APPDIR\jars\some.jar
app.classpath=...

如果您在生成的EXE中仍然存在问题,请注意此处提到的问题并详细编辑您的问题:

>

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

    在安装或修复--app-version之前卸载,以便它更改每个构建