最近用JFrame做了一个java jar UI界面应用程序, 查资料发现网上大部分的文章都是使用 ant bundle方式打包, 结果测试,这个方式在新版macos中已经失效, 打包后的app根本无法运行.
最新可用的命令行方式打包jar 到可执行app应用的方法如下:
- 使用 packr 打包 这个打包的文件相对 jar2app 打包的方式文件要小很多, 而且使用也很方便,下载 jar Release v4.0.0 · tekintian/packr · GitHub 文件后即可直接使用
地址: https://github.com/tekintian/packr
使用方法:
bash
java -jar packr-all.jar \
--platform mac \
--jdk https://ghproxy.net/https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u302-b08/OpenJDK8U-jre_x64_mac_hotspot_8u302b08.tar.gz \
--useZgcIfSupportedOs \
--executable myapp \
--classpath myjar.jar \
--mainclass com.my.app.MainClass \
--vmargs Xmx1G \
--resources src/main/resources path/to/other/assets \
--output myapp
命令执行后自动将你的jar 和你指定的java jre的运行环境, 还有资源文件(通过 --resources 指定) 都打包为可执行的 macos app或者 windows .exe app应用程序.
mac下面打包后是直接保存到 --output指定的目录 myapp , 直接将 myapp文件夹改名为 myapp.app 即是可执行mac应用, 打包后最好使用codesign进行签名
- jar2app 方式打包jar
这个工具可以将jar包和jre运行时打包到一起,也可以使用系统中的jre运行时.
打包命令:
bash
jar2app target/javaspider-1.0.jar -b cn.tekin.java -u JSPIDER -e spider -i spider.icns -n JavaSpider -c "(C)2024 Yunnan.ws Inc."