jre精简详细教程(附精简工具)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/pzhtpf/article/details/7039359
 

最近做个了java的桌面应用程序,可打包发布后才发现要带一个将近100M的jre,使程序显得过于臃肿,当务之急就是去精简jre,现将本人的精简过程写出来,以供大家参考!

思路:jre/lib/rt.jar有很多class,但大多数你的程序用不到,利用批处理命令(下文提到的cutJre.bat)可以得到你的程序所用到的class,!

所用到的工具:(1)360压缩软件(ps:往压缩文件里复制文件特别方便)

   (2)jre精简软件

本人已将上述两款软件压缩,以供大家下载:http://download.csdn.net/detail/pzhtpf/3878285

闲话少说,咱们赶快开始。

1,         咱们建一个新文件夹,这里我取名cutJre,将下载的精简工具解压到cutJre中,当然360压缩软件要安装,再将jdk中的jre文件夹复制到cutJre中,再将你的java导出jar文件和打包过的exe文件复制到cutJre中,我这里的示例程序是analysis.jar和analysis.exe,此时cutJre文件夹应包含以下内容:

Ps:一定要齐全,因为cutJRE.exe是本人用java所写,它的运行要也要基于jre!

1,         准备工作已经做好,这里所说的精简就是去精简jre/lib文件夹中的rt.jar,因为它最大,有大约46M。咱们打开cutJre.exe软件(第一次启动可能有点慢),根据提示去做,你用软件导入后,这时会弹出dos窗口和你的exe文件,把你的软件的所有功能使用一遍后,去关闭它们。这时先别急点击:“生成精简版JRE”,回到cutJre文件夹中看看,文件夹中多了cutJre.bat和class.txt(列出了所用到的class)这两个文件,清楚这一点可方便我们以后的操作!

2,         点击“生成精简版JRE”,时间可能会有点长,点击后,请稍等片刻,你可以干干其他事,正常的话,会出现下图:

精简完后cutJre文件夹中会多出几个文件夹,一般情况下是sun,java,javax,com这几个文件夹,在cutJre中新建一个文件夹,我这里是cutJre1,然后把jre和你的exe可执行文件,cutJre.bat,你的jar复制到cutJre1中,此时结构如下:

为了方便起见我们把rt.jar复制出来,单独对它进行操作后,再去替换cutJre/cutJre1/jre/lib/rt.jar,如果你对cutJre/cutJre1/jre/lib/rt.jar直接去操作的话,会提示你此文件正在使用,无法操作

然后用360压缩打开单独复制出来的rt.jar,去替换相应的文件夹如下图:

完成以后,用精简版的rt.jar去替换cutJre/cutJre1/jre/lib/rt.jar

第一次一般不会成功,然后我们去点击cutJre1文件夹中的cutJre.bat去找出缺少的class,会出现以下图示:

如上图所示:我们直接把红色部分所示的用原生态rt.jar文件夹替换精简版rt.jar中的文件夹, 比如说上图,我们直接把原版re.jar中sun文件夹中的java2d文件夹去替换精简版中相应的文件夹!,如下图:

 

比较麻烦的是cutJre.bat不会一次性显示出所有的缺少的class,所以要我们不断去试验!重复以上步骤!

 

待到cutJre不再报错时,可Exe可执行文件还是打不开,总提示

“Couldn’t load main class”,或其他错误,这就是你所使用的打包软件在作怪了,一般我们都用Exe4j,这时又要我们去替换所用到的类,一般你把java/lang,java/util,java/security这三个文件夹替换掉,如果还不行,再把sun/reflect,sun/misc,sun/security也替换掉!

经过这么一折腾,猛然间发现我们的rt.jar由将近47M变成了5M多,总算完成了瘦身!

4,rt.jar裁剪完成后,就要去删除一些jre中用不到的文件,首先删除jre中除bin,lib以外所有的文件!

然后我们再来给jre中bin文件夹动手脚,一个一个去删除,如果是你的程序用到的文件,电脑会自动提示你此文件删除不掉(ps:jre/bin/client这个文件夹电脑可能会提示你删不掉,但是它里面的classes.jsa有13M,它可以被删掉,在jre/lib中碰到这样的文件夹时,你也可以这样试试)

注意:java.exe这个文件不要删!我的jre/bin经过处理后包含如下文件:

然后再去处理jre/lib文件夹,方法跟上面一样,我的jre/lib理后包含如下文件:

Ps:这些文件都因你的程序而宜!

 如果程序可以打开,cutJre.bat中也没有报错,可程序的部分功能还是无法使用,这时你可以注意到cutJre文件夹中有个error.log这个文件,打开它,就可以看到缺少的class,同上把相应的文件夹直接替换即可!

哈哈,最算精简完毕,程序可正常运行,最后我的精简过的jre为17M,在可接受范围之内!

 

 如果还有问题,不能在任意电脑上去运行,那建议你只把rt.jar中的com文件夹去替换,经过本人的多次试验,这个文件夹最大,出问题的概率最小!而bin和lib中的文件也要小心翼翼的去删了!

e

阅读更多
换一批

没有更多推荐了,返回首页