首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用jpackage打包依赖类的正确选项

使用jpackage打包依赖类的正确选项
EN

Stack Overflow用户
提问于 2021-08-31 16:38:16
回答 1查看 82关注 0票数 0

我正在Windows上构建一个安装程序,在应用程序jar中有几个类,但依赖于日志记录(logback)。这不是一个模块化的应用程序。我发现很难正确构建它,因为日志记录依赖关系没有内置到安装程序中。当它运行时,cmd.exe告诉我没有找到slf4j类。

这是build命令

代码语言:javascript
复制
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。我找不到一个非模组装备的。

EN

回答 1

Stack Overflow用户

发布于 2022-03-23 14:40:04

jpackage隐式地为模块依赖项运行jlink,但似乎不包括jars。

对于具有非模块jar的构建,您可以在--input目录参数下添加每个jar,作为jpackage命令之前的构建步骤。创建一个临时输入目录..\webspeed\target\jars,并将每个非模块jars复制到该暂存目录。

在运行jpackage之后,然后通过检查yourlaunchername.cfg文件来设置类路径条目。每个启动程序cfg都应该包含一个条目,该条目指示已安装了每个非模块jars副本的类路径。

例如,Windows安装程序应该显示:

代码语言:javascript
复制
[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映像通常更快/更容易。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69002409

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档