`
aids198311
  • 浏览: 59468 次
  • 性别: 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内文件不可以么?

我明天实验一下,

相关推荐

    jar包问题排查脚本.zip

    它通过遍历jar包中的所有class文件,检查它们的字节码来查找目标字段。这对于解决“类找不到”或者确认依赖是否正确引入的问题非常有帮助。 2. **grep-jar** `grep-jar`类似于Linux的`grep`命令,但它是专门用于在...

    为什么装了QTP以后,总是不能录制脚本

    其中,一个关键组件是BHOManagerClass,这是一个浏览器帮助对象(Browser Helper Object),用于管理与浏览器相关的各种功能。 #### 问题原因分析 1. **BHOManagerClass状态异常**:如果BHOManagerClass的状态出现...

    Java脚本言程序手册语员

    这种机制有助于避免命名冲突,并允许在一个项目中同时使用多种脚本语言。 ### 4 JavaScript脚本引擎 Java脚本API支持多种脚本引擎,其中JavaScript是最常用的一种。JavaScript引擎能够解析和执行JavaScript代码,...

    struts2中文件上传过滤codeFilter

    这个过滤器可以防止恶意用户上传不安全的文件类型,例如脚本文件,或者限制文件大小以保护服务器资源。以下是对Struts2中文件上传及`codeFilter`的详细解释: **1. Struts2文件上传机制** Struts2提供了内置的支持...

    xml.class.php.zip_class

    5. **命名空间处理**: XML的命名空间特性可以避免元素名冲突,类可能包含处理XML命名空间的方法,如注册新的命名空间或者解析带有命名空间的XML文档。 6. **错误处理**: 高质量的XML处理类会提供良好的错误处理机制...

    一个php+文本同学录

    2. 数据一致性:在多用户环境下,确保并发写入文本文件时的数据一致性是个挑战,可能需要使用锁机制或者文件重命名策略来避免数据冲突。 3. 用户界面:尽管这是一个简单的系统,但良好的用户体验仍然是重要的。需要...

    Classpath Variable 解决办法

    在Java编程环境中,`Classpath`(类路径)是一个至关重要的概念,它是Java虚拟机(JVM)查找和加载.class文件的路径。当我们在开发和运行Java程序时,正确配置Classpath是确保程序能正常运行的关键步骤。这篇文档将...

    java-实验室预约管理系统.zip

    5. **build**:这个目录可能是构建输出的临时或最终结果,比如编译后的.class文件、打包的JAR文件或者部署相关的文件。 6. **.settings**:存储Eclipse项目的特定配置,如编码格式、编译器设置等。这些配置只对当前...

    Secure PHP Image Uploader

    这个工具的主要目标是确保用户上传的图片符合安全标准,防止任何潜在的代码注入或跨站脚本(XSS)攻击。在PHP环境中,处理用户上传的图像时必须格外小心,因为不恰当的处理可能导致服务器安全漏洞。 首先,我们要...

    jarcompare10.zip

    2. **代码冲突**:在合并多个开发者的工作时,查找可能的代码冲突。 3. **依赖分析**:识别不同JAR间的类和方法差异,以优化依赖管理。 4. **安全审计**:对比不同来源的JAR,找出可能的安全漏洞。 5. **性能优化**...

    仿京东商城分类效果(纯js+css)

    1. 命名空间:避免使用全局变量,防止与其他脚本冲突,可以使用IIFE(立即执行函数表达式)或模块化技术(如CommonJS或AMD)。 2. CSS选择器:谨慎选择CSS选择器,避免使用过于通用的类名,以免覆盖其他已有样式。 ...

    Android插件框架Android-Plugin-Framework.zip

    App安装时,系统会扫描app的Manifest并缓存到一个xml中,activity启动时,系统会现在查找缓存的xml,如果查到了,再通过classLoad去load这个class,并构造一个activity实例。那么我们只需要将classload加载这个class...

    自学如何使用框架的工具classpath

    在Java中,当你试图运行一个`.java`源文件或者调用一个`.class`字节码文件时,JVM需要知道这些文件的具体位置。`classpath`就是这个定位机制,它是一个包含目录路径和.jar文件路径的列表。如果`classpath`没有正确...

    MAC地址改IP.zip

    在局域网环境中,IP地址和MAC地址是网络设备之间通信的重要标识。MAC(Media Access Control...使用这样的系统可以避免IP冲突,提高网络管理效率,并有助于确保网络安全,因为只有授权的MAC地址才能获得相应的IP地址。

    简明Python教程.rar

    包是模块的容器,可以创建命名空间,避免命名冲突。 9. **标准输入输出**:Python提供内置的input()函数获取用户输入,print()函数输出信息,还支持文件操作,如读写文件。 10. **Web开发**:Python有多个流行的...

    解析xml

    XML文档可包含命名空间以避免元素名冲突,`Util.class`可能有处理命名空间的方法。同时,DTD(Document Type Definition)或XML Schema用于定义XML文档的结构和数据类型,`SecurityFilter.class`或许包含了验证XML...

    Java_2_5_3-源码.rar

    【Java_2_5_3-源码.rar】是一个压缩包文件,通常包含的是Java编程语言的源代码,可能是某个特定版本或项目的源代码库。这个版本号"2.5.3"可能指的是该软件或者库的迭代版本,暗示着在之前可能有2.5.2、2.5.1等版本,...

    20种VC++编译错误信息

    - 使用前缀或命名空间来避免名称冲突。 #### 4. error C2018: unknown character '0xa3' **描述**:编译器遇到了未知字符`0xa3`。 **解决方案**: - 检查并替换文件中的特殊字符或非ASCII字符。 - 使用文本编辑器...

    module.js

    模块内部拥有自己的作用域,这意味着在模块内部定义的变量和函数不会污染全局作用域,从而避免命名冲突和提升代码的可维护性。 六、CWD(Current Working Directory)与模块查找 Node.js在查找模块时,会以当前...

    learnmt:查找纳税人的代码

    在这个项目中,开发者需要能够查找和解析纳税人输入文件,以便提取和操作数据。 描述中提到的"luxury.properties"和"必要的.properties"文件,这些是典型的Java配置文件,通常用来存储应用的设置或特定环境的数据。...

Global site tag (gtag.js) - Google Analytics