如何用JLink/JPackage打包Groovy应用?需引入哪些模块?
解决Groovy Swing应用JLink/JPackage依赖问题
核心依赖模块
由于你未使用Groovy元编程特性,仅需引入以下两个核心Groovy模块:
groovy:Groovy基础核心模块,提供所有基础语法与API支持groovy-swing:专门适配Swing/AWT的Groovy扩展模块,简化Swing组件开发
JDeps正确扫描命令
之前JDeps无结果大概率是参数配置问题,试试这条命令:
jdeps --module-path /path/to/groovy/modules --add-modules java.base,java.desktop,groovy,groovy-swing --list-deps your-app.jar
参数说明:
--module-path:指定Groovy模块化jar包的存放路径(需使用Groovy 4+版本,该版本开始完全支持JPMS)--add-modules:手动添加已知核心模块,帮助JDeps正确识别依赖链- 最后指定你的应用jar包路径
JLink/JPackage实操示例
1. 构建自定义运行时镜像(JLink)
jlink --module-path $JAVA_HOME/jmods:/path/to/groovy/modules \ --add-modules java.base,java.desktop,groovy,groovy-swing \ --output custom-runtime \ --strip-debug \ --compress 2
2. 打包成平台可执行文件(JPackage)
jpackage --name YourAppName \ --input /path/to/your/app/resources \ --main-jar your-app.jar \ --main-class com.your.package.MainClass \ --runtime-image custom-runtime \ --type app-image # 可替换为exe、dmg等对应平台格式
关键注意事项
- 必须使用Groovy 4及以上版本,旧版本Groovy未模块化,无法直接通过JLink处理
- 若应用用到Groovy字符串模板、集合扩展等基础特性,
groovy模块已包含,无需额外引入 - 可直接查看Groovy模块化jar文件名确认模块对应关系:
groovy-4.x.x.jar对应groovy模块,groovy-swing-4.x.x.jar对应groovy-swing模块
内容的提问来源于stack exchange,提问作者Eric Samson
相关产品推荐
相关产品推荐

