精简Jre过程感想分享

前段时间利用Java开发了一个GUI程序小项目(想要详细了解或获得项目的朋友可以在下方回复我),

开发的程序不大(才几M),而在用exe4j打包成exe时却要背着一个近200M的jre,因此开始了我的精简历程,下面我分享下我的一些小技巧和感想。

1.精简Jre实际过程可参考一下博文:https://my.oschina.net/haitaohu/blog/2243410 ;

2.精简bin过程可以采用删除法:首先用exe4j将jar(必须是可运行的jar文件)和jre打包生成相应的exe文件 —> 双击运行exe文件,然后打开bin目录Ctrl+A全选(除java.exe)删除,遇到不能删的点击跳过 —> 关闭exe文件,再次打开若能正常运行,即精简bin完毕;

3.精简lib中的rt.jar可能会用到GreenJVM,这里提供免翻墙下载地址。需要注意的是利用GreenJVM make工具精简出来的rt.jar的确很精简,但是会漏掉很多class导致后面运行不起来exe,也是后面exe4j打包后出现could not load main class问题的主要所在;GreenJVM make使用方法主要是利用记事本编辑下make.bat内容,不懂得可以回复我;

4.建议可以按照以上博文的步骤去试试,而我本人则是通过一种另一种笨方法来实现的:

(1)准备三个rt.jar和待执行的exe:一个是经GreenJVM精简后的rt.jar;一个是完整版的rt.jar;还有一个就是你要的rt.jar(你要做的rt,可以先复制一份完整的过来准备修改);以及将jar和你的jre打包后的exe;

(2)利用WinRAR分别打开三个jar文件,对照精简后的rt.jar(标记为rt_Simple.jar)相应的删除目标rt.jar(标记为rt_Target.jar)里的CLASS文件,然后进入运行exe,若运行成功不报错即没问题,继续下一批文件的操作;若报错或者报错,则打开完整版的rt.jar(标记为rt_Full.jar)找到相应的文件复制至rt_Target.jar里;以此循环,直到所有的(尽可能找大文件删除验证,到后面一些小文件可以忽略)删除完毕;

5.删除完所有的多余CLASS后用exe4j(点击可下载)进行打包exe,点开运行后若出现could not load main class问题,是利用GreenJVM make工具精简出来的rt.jar漏掉了很多class导致的,此时在exe同文件夹下会生成一个error.log文本,可以尝试着在该文本下找到缺失的CLASS名,在rt_Full.jar里找到相应的CLASS还原至rt_Target.jar里,继续运行exe,一般会再次出现问题,所以需要依次不断的找回CLASS;ps:有时候可能往rt.jar里面添加class文件也不能解决问题 那么就把相关的整个文件夹替换进去

6.全部CLASS文件都已经找回,打包完exe后,自己的电脑终于可以运行起来自己的项目了(有时程序不会用你自己的jre,即使你设置了相对路径,此时可以把电脑里的java环境变量随便改下致电脑的jre失效);

7.光自己的电脑成功了还不够,需要到其他电脑里测试才行,一测,果然还是出错了,又有好几个CLASS丢失,唉,为了解决这个问题我做了很多工作去解决,最后发现一切都是徒劳,因为:这样精简的jre对其他电脑系统的兼容性比较差,甚至不能运行,而解决方案就是在目标系统上运行一次,得到rt.jar整合所有用到的class文件;

8.后面的解决方案我已经无心去尝试了,对这个jre精简我已经琢磨一个多礼拜,煞费心血最后得了半成品:对于除了rt.jar包外进行了精简,而rt.jar依然原封不动打包进去,这样得到的jre虽然不是很精简,但确实是简化了一些;

在这里主要分享了自己这么长时间琢磨后的感受与小技巧,有什么问题可以直接回复我,我尽可能的回答大家。

希望对你有所帮助,欢迎订阅我的博客!

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值