当java工程代码越来越复杂或者删除了工程中的一些代码只保留部分功能时,你的工程中就可能会存在一些用不到的jar包。这就会给你的打包工作带来不便,所以这里提供了一种删除工程(java工程、web工程)中多余jar包的方法,具体如下:
1.下载loosejar.jar文件;
- https://github.com/kyrill007/loosejar/releases ;
- https://code.google.com/archive/p/loosejar/downloads ;
2.将下载好的loosejar-1.1.0.jar文件,放到工程的WEB-INF下的lib中,我这里的路径是C:\Users\iwwenbo\Workspace\bomcweb\WebRoot\WEB-INF\lib
;
3.在你的IDE里指定运行参数:-javaagent:C:/Users/Workspace/bomcweb/WebRoot/WEB-INF/lib/loosejar-1.1.0.jar(需要替换为你的路径),我用的是Intellij IDEA ,操作如下:
4.启动应用,尽可能的让每段代码都执行一遍;
5.运行jconsole,选择bootstrap对应的端口,连接;
6.在连接后的窗口中,选择MBean下的com.googlecode.loosejar,点击summary,即可查看到分析结果了;
7.在分析结果中,类似于下面情形的jar包就是没有加载任何class的jar包就是没用的的多余jar包:
Jar: C:\Users\iwwenbo\Workspace\bomcweb\out\artifacts\bomcweb_war_exploded\WEB-INF\lib\commons-beanutils-1.8.3.jar
Utilization: 0.00% - loaded 0 of 137 classes.
注意:虽然这样删除的是没有被引用的jar包,但是可能有些jar包是动态运行过程中加载的,比如数据类型转换类的,只有加载数据时才会用到,所以我们暂时把这些jar包移到其他目录,这些jar包很可能都是import的,所以启动应用时应该会提醒,我们需要多测试才能保证jar包是去掉的真正不需要的。
参考原文通过loosejar清理应用中冗余的jar包,并有所补充修改。
最新评论
我的是ipv4网络,如何使用直播源啊!
我今天试了,不想啊,我的是新疆昌吉移动的网络。
收不到验证码电报
现在充值29起了