`
aids198311
  • 浏览: 58710 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

写了个脚本查找项目里面重复的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


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

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

分享到:
评论
1 楼 diyunpeng 2012-06-18  
直接用JarInputStream读取Jar内文件不可以么?

我明天实验一下,

相关推荐

Global site tag (gtag.js) - Google Analytics