我正在Windows上构建一个安装程序,在应用程序jar中有几个类,但依赖于日志记录(logback)。这不是一个模块化的应用程序。我发现很难正确构建它,因为日志记录依赖关系没有内置到安装程序中。当它运行时,cmd.exe告诉我没有找到slf4j类。
这是build命令
jpackage --verbose --dest jpk -p ..\.m2\repository\org\slf4j\slf4j-api\1.6.6\slf4j-api-1.6.6.jar;..\.m2\repository\ch\qos\logback\logback-core\1.0.9\logback-core-1.0.9.jar;..\.m2\repository\ch\qos\logback\logback-classic\1.0.9\logback-classic-1.0.9.jar --win-dir-chooser --win-console --input ..\webspeed\target --type msi --main-jar webspeed-1.0-SNAPSHOT.jar --main-class com.technojeeves.webspeed.WebspeedSystray我希望没有必要以一个胖罐子作为起点,因为当我尝试使用Maven Shade之后,我发现jpackage花费了很长的时间和大量的内存。我不能再等下去了,结束了建造。
关于jpackage本身的例子很少,只有简单的例子只是简单的回显Oracle。我找不到一个非模组装备的。
发布于 2022-03-23 14:40:04
jpackage隐式地为模块依赖项运行jlink,但似乎不包括jars。
对于具有非模块jar的构建,您可以在--input目录参数下添加每个jar,作为jpackage命令之前的构建步骤。创建一个临时输入目录..\webspeed\target\jars,并将每个非模块jars复制到该暂存目录。
在运行jpackage之后,然后通过检查yourlaunchername.cfg文件来设置类路径条目。每个启动程序cfg都应该包含一个条目,该条目指示已安装了每个非模块jars副本的类路径。
例如,Windows安装程序应该显示:
[Application]
app.classpath=$APPDIR\jars\logback-core-1.0.9.jar
app.classpath=$APPDIR\jars\logback-classic-1.0.9.jar
...如果/as模块依赖项变化不大,那么预先准备包含模块映像并传入--runtime-image ${your.jlink}的jlink映像通常更快/更容易。
https://stackoverflow.com/questions/69002409
复制相似问题