查寻lib中重复类,找出重复jar包解决冲突
查找lib中重复类,找出重复jar包解决冲突
package my.jarsearch.util; import java.io.File; import java.util.ArrayList; import java.util.Enumeration; import java.util.HashMap; import java.util.Iterator; import java.util.jar.JarEntry; import java.util.jar.JarFile; public class JarSearcherUtil { private File[] jarFileArray; HashMap<String, Object[]> hash = new HashMap<String, Object[]>(); private JarSearcherUtil() { } public JarSearcherUtil(File[] jarFileArray) { this.jarFileArray = jarFileArray; } public void searchClassFileName() { JarFile jarFile = null; try { for (int i = 0; i < jarFileArray.length; i++) { try { jarFile = new JarFile(jarFileArray[i]); searchClassFileNameToMap(jarFile); } catch (Exception e) { e.printStackTrace(); } finally { jarFile.close(); } } } catch (Exception ioe) { ioe.printStackTrace(); } } private void searchClassFileNameToMap(JarFile jarFile) { Enumeration<JarEntry> enumJar = jarFile.entries(); String matchFileName, tmpStr; while (enumJar.hasMoreElements()) { matchFileName = String.valueOf(enumJar.nextElement()); if (matchFileName.endsWith(".class")) { tmpStr = matchFileName.replace('/', '.'); tmpStr = tmpStr.substring(0, tmpStr.length() - ".class".length()); Object[] obj = hash.get(tmpStr); if (obj == null) { ArrayList<String> lst = new ArrayList<String>(); lst.add(jarFile.getName()); hash.put(tmpStr, new Object[] { new Integer(1), lst }); } else { ArrayList<String> lst = (ArrayList<String>) obj[1]; lst.add(jarFile.getName()); hash.put(tmpStr, new Object[] { new Integer((Integer) obj[0] + 1), lst }); } } } } public String getSearchResult() { StringBuilder str = new StringBuilder(); Object[] key = (Object[]) hash.keySet().toArray(); for (int i = 0; i < key.length; i++) { Object[] obj = hash.get(key[i].toString()); if ((Integer) obj[0] > 1) { str.append(key[i].toString()); str.append("\r\n"); ArrayList<String> lst = (ArrayList<String>) obj[1]; for (Iterator iterator = lst.iterator(); iterator.hasNext();) { String string = (String) iterator.next(); str.append(string); str.append("\r\n"); } str.append("--------------------------"); } } return str.toString(); } }