我用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
我可以做些什么来将这些类型的模块添加到我的应用程序中?
您将只能从模块创建一个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之前卸载,以便它更改每个构建