检测多个Jar包冲突的class
来源:互联网 发布:上海锐战网络 编辑:程序博客网 时间:2024/06/05 05:58
思路
为了提前找到存在相同class的jar包,我准备写一个小程序,由于是操作jar包等,需要用Java代码来处理,但写出来一般是一个class文件,使用者可能需要用命令行执行的方式来调用它,java的桌面程序我不擅长,于是想到了用.NET开发一个工具壳子,内部调用java代码的方式来执行,开始想到用.NET下的IKVM来处理jar包,它提供了java基础包的.NET实现。但加载它也会使程序增大几M。最后我换了个思路,代码由Java来编写,.NET用java命令的方式执行java编写的class文件,再把输出内容展现到.NET工具的界面上,这样也会大大减小工具的大小。
CheckLib.java
/** * Created by Administrator on 2014/10/10. */import java.io.*;import java.lang.*;import java.util.*;import java.util.jar.*;public class CheckLib { public static void main(String args[]) throws Exception { String libpath = "E:/karl/service/jetty-distribution-8.1.15.v20140411/webapps/ROOT/WEB-INF/lib"; if(args.length < 1){ System.out.println("请输入jar包路径!"); // return ; } File file = new File(libpath); Map<String,HashSet<String> > jarMap = new HashMap<String,HashSet<String>>(); if(null != file && file.exists() && file.isDirectory()) { File[] jarFile = file.listFiles(); for (File f : jarFile) { if (f.isFile() && f.getName().endsWith(".jar")) { try { JarFile jar = new JarFile(f); Enumeration<JarEntry> enumJar = jar.entries(); while (enumJar.hasMoreElements()) { JarEntry je = enumJar.nextElement(); if (je.getName().endsWith(".class")) { if (jarMap.containsKey(je.getName())) { jarMap.get(je.getName()).add(f.getName()); } else { HashSet<String> set = new HashSet<String>(); set.add(f.getName()); jarMap.put(je.getName(), set); } } } } catch (Exception e) { e.printStackTrace(); } } } } //查找重复类代码如下: Iterator it = jarMap.keySet().iterator(); while(it.hasNext()){ Object obj = it.next(); if(jarMap.get(obj).size() > 1){ //存在重复 HashSet<String> hsfile = jarMap.get(obj); String sfiles = ""; for(String sf : hsfile){ sfiles = sfiles + sf + ","; } if(sfiles.length() > 1){ sfiles = sfiles.substring(0, sfiles.length() -1); } System.out.println(sfiles + "有重复类:" + obj.toString()); } } }}
转自: http://www.cnblogs.com/Lawson/archive/2013/03/27/2984343.html
0 0
- 检测多个Jar包冲突的class
- jar包的冲突
- jar包冲突的时候,怎么查看某class都在哪些jar包中存在?
- java 检测class文件走哪个jar包的代码
- java 多个第三方jar包冲突解决方案
- Android项目依赖多个项目,它们的jar包冲突的解决办法
- jsp的jar包冲突
- jar包冲突的解决
- maven项目由于多个依赖中含有同一个jar包导致的冲突问题的解决办法
- 百度地图jar包冲突,特别是定位包冲突com/baidu/location/Address/$a.class。
- SSH的jar包冲突的问题
- maven去除相冲突的jar包
- 解决asm.jar包的冲突
- 解决cxf的jar包冲突
- 解决cxf的jar包冲突
- struts2的 jar包冲突问题解决
- web project的Jar包冲突
- 解决jar包冲突的问题
- editplus替换开头的数字
- JS资源
- Cocoa 框架 For iOS(二)对象的分配初始化、内省、单例
- fdgdfgdfg
- BZOJ 3037 创世纪 树形DP
- 检测多个Jar包冲突的class
- TextView
- MTK6515 android打版软件配置
- 第7周上机实践项目3——求圆柱体的表面积
- android.content.res.Resources$NotFoundException: Resource ID #0x7f030002
- uvaoj 1108 - Mining Your Own Business
- 进程间通信之共享内存(一)
- gem相关命令使用
- ie6的png图片不透明问题解决方案