最近在做的项目需要调用第三方API,考虑到对java熟悉一些,就用了java语言进行开发,结果两天前老板让给程序写一个客户端界面,我一想,简单啊,Swing和AWT一起上,布局排版折腾了一天,终于写好了,运行程序,完美无瑕!
(PS:为什么用了java开发客户端?众所周知,java不适合写客户端程序!!!java的优势是企业开发、web这块,的确在界面开发上不是强项,不过这次的客户端程序对界面并没有太多效果的要求,界面效率也不是瓶颈,相比于其他GUI工具,本人对Java更为熟悉,所以此次暂时采用java)
好,下一步,开始导出,拿到jar文件后,我才意识到关键两个问题:
1.运行java桌面程序,必然要安装java虚拟机,这对于普通客户来说,是很难接受的,那我们有没有别的办法,不让用户安装JDK就可以运行java程序;
2.jar文件对于客户来有些太陌生,能不能转成成exe文件,让用户一眼看出这是一个可执行文件;
带着这两个问题,我开始查资料,对于上述问题,也找到了解决办法,现对操作过程进行记录:
Java程序打包成exe可执行文件,分为三大步骤:
第一步:将Java程序通过Eclipse或者Myeclipse导成Jar包
第二步:新建一个文件夹,将jar包以及32位jre(注意:一定要是32位!!!)放入该文件夹下,然后通过Jsmooth或者exe4j将Jar包生成exe可执行文件
第三步:根据自己的程序,对JRE进行瘦身后与exe文件一起打包交付给客户
重点在于第二部分,对于Jsmooth和exe4j这两个软件,我都进行了尝试,exe4j是不是免费的,如果不进行注册,生成后的可执行文件在打开时会先弹出提示框,意思是你这个exe文件是用exe4j转的,虽然说尊重版权吧,但是作为强迫症晚癌还是不能忍。于是转而尝试Jsmooth,这个软件简介明了,又是免费的,操作方法综合参考1和参考2.
在第二步中,要格外注意的一点是,Jsmooth和exe4j都只能对32位的jdk进行捆绑,通过cmd -version查看,如果自己的电脑上装的是64位的jdk,那就比较麻烦了,笔者就遇到了这种问题,打开软件会弹出以下信息:
我们也知道,eclipse和jdk的位数必须一样,不然eclipse无法打开,打开会弹出一个类似文件夹的信息!所以若我们再装一个32位jdk后,极易产生混乱,导致eclipse打不开,所以保险起见,还是找一台安装有32位jdk的电脑进行第二步操作吧。
通过java -verbose查看jdk安装路径:
Jsmooth完成后,会在第二步建立的文件夹中生成一个exe程序,此时可以删除jar文件,只保留exe和jre一起打包给客户,就可以让这个磨人的java小妖精在不装jdk的电脑上运行了!!!