JDK 16 新特性 学习
JDK 16 新特性
JDK 16 的特性很多但是我基本都不敢兴趣
唯独
- 提供用于打包独立的 Java应用程序 jpackage 工具。最初作为 JDK 14 中的孵化工具,jpackage在 JDK 15中仍然处于孵化期。预计到 JDK 16 版本,jpackage 将会进入生产环境中,支持本地包格式,并为用户提供流畅的安装体验,以及允许在打包时指定启动时间参数。格式包括 Windows 上的 msi 和 exe、 MacOs 上的 pkg 和 dmg、以及 Linux 上的 deb 和 rpm 。该工具可以直接从命令行调用,也可以以编程方式调用。新的打包工具解决了许多 Java 应用程序需要以一流的方式安装在本机平台上,而不是放置在类路径或模块路径上等问题。
本来我一直就在想如何让将java 写出来的软件在不依靠jdk 或者 jre 或者如何将写出来的程序可以想普通的windows的安装包那样双击安装运行不用再去安装运行环境,当我看到这个的时候瞬间燃起了兴趣
经过一番搜索我找到了一些资料
要使用jdk 16 的新特性就得
- 安装jdk 16
- 安装wix311
- 在控制面板 把 .NET Framework 3.0的功能打开
- 将jdk 16 配到环境变量里
这时就可以在cmd 中输入
jpakage -h
就可以得到这个命令的一些参数的说明
根据博客上的,我这里只使用了第一种打成一个安装包并且指定安装路径
在使用任何软件或命令将写的程序达成jar包后 将这个jar 复制到任意位置这里建议复制到程序的根目录即集成开发环境的项目根目录 建立一个lib 的文件夹内
在根目录中启动cmd
- 使用下面的命令,此命令只会形成一个什么都没有的安装包或者报错的提示,相对报错的提示会大一些
jpackage --name Non-modular-installer --input lib --main-class com.raven.App --main-jar Non-m
odular-packaging-demo.jar
- –name 打包后的安装包名
- –input 要打包的文件目录
- –main-class 这是非必须选项,如果你的 jar 包 META-INF/MANIFEST.MF 中已经指定了 Main-Class, 则无需此命令。一般来说还是加上比较好。
- –main-jar 主程序所在 jar 包
- 其余常用:
- –temp 临时文件所在目录,默认系统 temp
- –dest 打包到哪个目录下,默认当前目录
- –type 打包成什么类型,exe?msi?deb 等等,windows 默认是 exe
- 所以要在命令后面加上 --vendor raven
jpackage --name Non-modular-installer --input lib --main-class com.raven.App --main-jar Non-modular-packaging-demo.jar --vendor raven
ok,已经打包成功,试试安装吧(提示,又会有想不到的效果)。
相信你通过双击安装,已经发现了问题,那就是安装后没有任何效果,没有 windows-menu,没有 windows 快捷键,程序也没有运行启动。但是控制面板已经找到安装程序了。
- 在 windows 平台上还需加上几条命令才行:
jpackage --name Non-modular-installer --input lib --main-class com.raven.App --main-jar Non-modular-packaging-demo.jar --vendor raven --win-dir-chooser --win-shortcut --win-menu --win-menu-group "Non-modular-packaging"
-
–win-dir-chooser, 安装时添加 “选择安装路路径”
-
–win-shortcut, 安装后自动在桌面添加快捷键
-
–win-menu-group, 启动该应用程序所在的菜单组 (实测无效,但是必须有这条命令,没有–win-menu 会报 311 错误)
-
-update 2021-2-18: –win-menu-group 应该放在–win-menu 之后,否则无效。
-
–win-menu,添加到系统菜单中