写了个脚本查找项目里面重复的class文件,避免冲突

项目中的jar包里面可能有 包名+类名 都相同的class,可能导致class加载出问题。
昨天有同事写了个脚本来实现查找重复jar包操作的功能,结果跑一次要20分钟。
汗!
问我为啥这么慢!一看,发现时间都耗在io操作上了(他把jar包解压缩后再做的其他操作)。
其实要看jar包里面的内容无需解压,unzip -l即可
写了个脚本,自己在eclipse插件的那个文件夹里面试了一下,还好。
总共697个jar文件,里面包含了85836个class文件,解析一次只需要10秒左右。
awk的数组效率还是挺高的。shell代码如下:

ls *jar|while read LINE; do unzip -l $LINE; done|awk '/.*\.class$/{a[$4]++}END{for(aa in a){if(a[aa]>1)print a[aa]" "aa}}'|sort -nrk1,1

[color=darkred]
(7月18号修改)同事要求记录jar包的文件名,回来想了一下,没有很好的办法,用2个数组解决了。
暂时没有想到更好的办法。[/color]

ls *jar|while read LINE; do unzip -l $LINE; done|awk '/.*\.class$|^Archive/{if($1=="Archive:"){f=$2};if($4!=""){c[$4]++;a[$4]=a[$4]" "f}}END{for(aa in a){if(c[aa]>1)print c[aa]" "aa" "a[aa]}}'|sort -nrk1,1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值