首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

判断ClassLoader上的某个类是否有重复[转自梁飞]

2012-12-24 
判断ClassLoader下的某个类是否有重复[转自梁飞]import java.net.URLimport java.util.*public class et

判断ClassLoader下的某个类是否有重复[转自梁飞]

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

热点排行