【前言】
今天一天就做这个了,无语了,焦头烂额啊,
其实java的优势真不在应用程序上,
想编软件的学学C什么的。
【说明】
几种方法都试过,
但是好些都不成功,
可能是我的操作有问题吧。
【jsmooth】
接触的第一款jarToexe软件,
参考的这篇文章:
http://hi.baidu.com/chenzhiyanczy/blog/item/070a0f04f9da6308738b6514.html
感受:
可以生成独立的exe文件,
但是无法在没有jre的机器上运行,
文中所说的捆绑jvm也没有实现。
原理:
琢磨着像,把jar打进exe,同时告诉电脑jvm在哪。
【exe4j 】
参考文章:
http://www.blogjava.net/huliqing/archive/2008/04/18/193907.html
感受:
最后生成的是一个文件夹,其中有jre,jar,exe
exe文件不能离开这个文件夹否则无法使用。
原理:
应该是告诉电脑jar在哪,jvm在哪。
【Inno Setup】
参考文章:
同上。
感受:
就是把exe4j生成的文件夹做了一个安装包,
然后通过这个安装包安装,
感觉挺好玩,但是不现实,
一个安装包中有jre,所以很大。
【GreenJVMMake】
参考文章:
http://blog.csdn.net/cping1982/article/details/2892844
感受:
通过上面可以知道jar转成exe的大小和jre直接相关,
所以想到了精简jre大小,
自己琢磨了半天发现基本上有用的九个rt.jar,
所以准备精简rt.jar,使用这个软件可以做到,
做到之后结合exe4j会报错,
该文给出的方案和exe4j + Inno Setup相似,
但是到了这一步:
没办法,我们制作一个完整调用pack类库的小程序,而后以此生成仅有依赖库的rt.jar,合并打包进自定义的rt.jar中,再次运行程序。OK,通过了。
不知道pack类库是个什么,所以也没法进行下去。
原理:
精简jre,然后将jre和jar,以及可以告诉电脑jar和jvm在哪的一个exe放一起
【Java应用定制工厂】
参考文章:
http://www.2cto.com/kf/201112/113906.html
感受:
比上面的GreenJVMMake好用很多,
功能有:精简jre,将精简的jre和jar生成exe
其中精简有两种模式,
一是仅仅包含运行时用到的类,这种精简后jre很小;
另一种是包含运行时用到的类和其依赖的所有类,这种精简后jre稍大,但是出错少。
原理:
将jre精简,然后将jre,jar放到一个文件夹,生成exe,告诉电脑jar和jvm在哪,
exe也是不能脱离这个文件夹。
【推荐】
要是想将自己写的jar程序放到其他没有jre电脑上也可以用,
推荐这种方式:Java应用定制工厂 + Inno Setup