import java.net.URL;
import java.util.*;
public class etst {
public static void checkDuplicate(Class cls) {
checkDuplicate(cls.getName().replace('.', '/') + ".class");
}
public static void checkDuplicateByName(String className) {
System.err.println("checkDuplicate");
checkDuplicate(className.replace('.', '/') + ".class");
}
public static void checkDuplicate(String path) {
try {
// 在ClassPath搜文件
System.err.println("checkDuplicate");
Enumeration<URL> urls = Thread.currentThread().getContextClassLoader().getResources(
path);
Set files = new HashSet();
while (urls.hasMoreElements()) {
URL url = urls.nextElement();
if (url != null) {
String file = url.getFile();
if (file != null && file.length() > 0) {
System.err.println("Duplicate class " + path + " in " + files.size()
+ " jar " + url);
files.add(file);
}
}
}
// 如果有多個,就表示重複
if (files.size() > 1) {
System.err.println("Duplicate class " + path + " in " + files.size() + " jar "
+ files);
}
} catch (Throwable e) { // 防禦性容錯
System.err.println(e.getMessage());
}
}
public static void main(String[] args){
checkDuplicateByName("java.lang.String");
}
}
輸出結果:
checkDuplicate
checkDuplicate
Duplicate class java/lang/String.class in 0 jar jar:file:/usr/lib/jvm/java-6-sun-1.6.0.24/jre/lib/rt.jar!/java/lang/String.class