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

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

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

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

安装完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包丢进去:

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

执行: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图标放目录里了);

--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进行安装了,进入安装向导:

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

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

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

安装完成;

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

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

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

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

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

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

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

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

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值