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进行处理,非常感谢!