JAVA JAR制作可自运行的EXE包

JAVA项目开发完成生成JAR包后,发给客户,一般需要安装JAR,再输入命令启动程序,有没有生成EXE文件,让客户像在WIN一样双击即可启动程序的方法呢?现在 上有许多的解决方案,都是下载个第三方软件导入jar、可生成exe文件。

但是,这原理是什么呢?可不可以不借用第三个程序即可实现?

其实也简单,只需一个winrar即可实现。首先把jar包与jre一起压缩成压缩包时,在自解压选项、设置、解压后运行输入启用jar的命令,如:java -jar jar包。

再想想,winrar非开源软件,这样是不是有授权方面的风险?有没有更简单的方案:

答案当然是有啦,推荐使用sfx的方案。

自解压文件内容如下:

1、sfx:

sfx文件打头,这是一个真正的程序,实现了根据config.txt配置信息解压缩尾部的压缩文件,并执行相应的操作。sfx下载地址:http://www.7-zip.org/

2、config.txt

config.txt文件做相关的配置,比如标题,解压缩位置,解压缩之后执行什么样的操作等。config.txt内容:

;!@Install@!UTF-8!Title="Software 7.00"BeginPrompt="Do you want to install the Software 7.00?"RunProgram="7zr.exe b";!@InstallEnd@!

说明:

Title: 运行时的窗口标题

BeginPrompt: 运行时提示语

RunProgram:运行命令

3、压缩文件

把你的jar包、jre一起压缩成7z即可。

4、生成exe文件,代码如下:

@Testpublic void gen7zToExe() throws IOException {	byte[] file1s = FileUtils.readFileToByteArray(new File("E:\test\7z.sfx"));	byte[] file2s = FileUtils.readFileToByteArray(new File("E:\test\config.txt"));	byte[] file3s = FileUtils.readFileToByteArray(new File("E:\test\aaa.7z"));	File newFile = new File("E:\test\aaa.exe");	if (!newFile.exists()) {		newFile.createNewFile();	}	FileUtils.writeByteArrayToFile(newFile, file1s);	FileUtils.writeByteArrayToFile(newFile, file2s, true);	FileUtils.writeByteArrayToFile(newFile, file3s, true); }

如果不想写代码,使用win自带的copy命令也一样能实现:

copy /b "=7z.sfx" + config.txt + aaa.7z aaa.exe

原理就是按自解压文件内容,把sfx,txt,7z合成一个文件,该文件即exe。

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年6月1日
下一篇 2021年6月1日

相关推荐