java代码中如何运行本地jar包(JAR制作可自运行的EXE包)

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

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

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

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

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

自解压文件内容如下:

java代码中如何运行本地jar包(JAR制作可自运行的EXE包)(1)

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文件,代码如下:

@Test public 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。

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页