jdk14——独立打包工具jpackage

jpackage是jdk14正式加入的一个用于独立打包的工具;

官网简介翻译:

jpackage工具将以Java应用程序和Java运行时映像作为输入,并生成一个包含所有必要依赖项的Java应用程序映像。它可以生成特定于平台格式的本机软件包,例如Windows上的exe或macOS上的dmg。每种格式都必须在其所在的平台上构建,没有跨平台支持。该工具将提供各种选项,允许以不同方式自定义打包的应用程序。

jdk17的官网:The jpackage Command (oracle.com)

还百度到一个中文的网站,应该不是新版本的:JPackage - Java中文网 (p2hp.com)

使用jpackage需要至少jdk14,还要装个WIX TOOLSET工具(没装的话使用jpackage会提示要安装并提供了个网址:WiX Toolset)

jdk14——独立打包工具jpackage_第1张图片

最终是跳到github上下载:Release WiX Toolset v3.11.2 · wixtoolset/wix3 · GitHub

jdk14——独立打包工具jpackage_第2张图片

安装wix311需要.net 3.5.1环境,还得在电脑上弄个.net 3.5环境(我的win10电脑):

打开“控制面板”,点击“程序”,点击“启用或关闭Windows功能”,打开的窗口里勾选“.NET Framework 3.5”,然后让windows下载安装即可;

jdk14——独立打包工具jpackage_第3张图片jdk14——独立打包工具jpackage_第4张图片

jdk14——独立打包工具jpackage_第5张图片

安装完wix工具后就可以使用jpackage了;

先准备一个正常的jar包:

package test;

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		System.out.println("Hello World");
		try (Scanner scan = new Scanner(System.in)) {
			scan.nextLine();
		}
	}
	
}

打包成可执行的jar包(为了防止运行时一闪而过就加了个Scanner读取输入后再退出);

我测试用的文件夹目录:E:\Temp\javatest\testJpackage,在里面新建了一个in文件夹,把生成的abc.jar包丢进去:

jdk14——独立打包工具jpackage_第6张图片

回到测试目录E:\Temp\javatest\testJpackage,shift+右键,在此处打开Powershell窗口;

jdk14——独立打包工具jpackage_第7张图片

执行:jpackage.exe --input .\in -t exe --description onlytest -n myapp --main-jar abc.jar --main-class test.Main --icon .\yahaha.ico --win-console --win-dir-chooser --win-shortcut --win-shortcut-prompt

过一会等执行完毕,就会在测试目录下生成一个exe的安装文件(PS:还提前做了一个ico图标放目录里了);

jdk14——独立打包工具jpackage_第8张图片

--input 设置jar包所在的路径;-t 指明打包类型是exe(--type简写);--description 写了个描述“onlytest”;-n 设置程序名字(--name的简写);--main-jar 指定jar包;--main-class 指定main方法;--icon 指定图标;--win-console 指定使用控制台启动器;--win-dir-chooser 在安装程序的时候可以选安装目录;--win-shortcut 创建桌面快捷方式;--win-shortcut-prompt 在安装程序的时候可以选择是否创建桌面快捷方式;

然后就可以双击exe进行安装了,进入安装向导:

jdk14——独立打包工具jpackage_第9张图片

下一步,选一个安装目录;

jdk14——独立打包工具jpackage_第10张图片

下一步,勾选是否创建桌面快捷方式;

jdk14——独立打包工具jpackage_第11张图片

下一步,开始安装,点击安装,弹窗并选“是”允许未知发布者的安装;

jdk14——独立打包工具jpackage_第12张图片

安装完成;

jdk14——独立打包工具jpackage_第13张图片

 然后在桌面有个快捷方式了:

jdk14——独立打包工具jpackage_第14张图片

安装目录里也已经有安装完毕的程序了:

jdk14——独立打包工具jpackage_第15张图片

双击快捷方式就可以执行了:

jdk14——独立打包工具jpackage_第16张图片

在控制台里回车让scanner读取一下就可以结束程序;

注意:安装程序不能重复安装,需要先卸载后才能安装,同时桌面图标和安装目录都会卸载清空;

jdk14——独立打包工具jpackage_第17张图片

 另外还有一个坑需要注意:--ipnut目录不要跟--temp临时目录(默认当前目录)在同一个目录层级或者包含temp目录,会造成目录无限循环,删除这种好几百好几千层的嵌套目录不太友好;

关于这个问题百度到一篇文章:java JPackage不生成可工作的exe和bugs文件夹 - Java中文网 (cnpython.com)

文章上的回答可能是机翻吧,咱也不知道:

jdk14——独立打包工具jpackage_第18张图片

你可能感兴趣的:(JDK特性,jdk特性)