免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1687 | 回复: 0
打印 上一主题 下一主题

查看Class从那个jar文件加载及在jar文件中查找Class [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-10-22 06:41 |只看该作者 |倒序浏览
查看类是从哪个Jar包中加载的:
java 代码

ProtectionDomain pd = MyCase.class.getProtectionDomain();   
CodeSource cs = pd.getCodeSource();   
System.out.println(cs.getLocation());   
查找类在某个目录下哪个Jar包中:
package test;   
import java.io.File;   
import java.util.ArrayList;   
import java.util.Enumeration;   
import java.util.List;   
import java.util.zip.ZipEntry;   
import java.util.zip.ZipFile;   
   
public class FindJarOfClass {   
    public String className;   
   
    public ArrayList jarFiles = new ArrayList();   
   
    public FindJarOfClass() {   
    }   
   
    public FindJarOfClass(String className) {   
        this.className = className;   
    }   
   
    public void setClassName(String className) {   
        this.className = className;   
    }   
   
    public List findClass(String dir, boolean recurse) {   
        searchDir(dir, recurse);   
        return this.jarFiles;   
    }   
   
    protected void searchDir(String dir, boolean recurse) {   
        try {   
            File d = new File(dir);   
            if (!d.isDirectory()) {   
                return;   
            }   
            File[] files = d.listFiles();   
            for (int i = 0; i  
                if (recurse && files.isDirectory()) {   
                    searchDir(files.getAbsolutePath(), true);   
                } else {   
                    String filename = files.getAbsolutePath();   
                    if (filename.endsWith(".jar")||filename.endsWith(".zip")) {   
                        ZipFile zip = new ZipFile(filename);   
                        Enumeration entries = zip.entries();   
                        while (entries.hasMoreElements()) {   
                            ZipEntry entry = (ZipEntry) entries.nextElement();   
                            String thisClassName = getClassName(entry);   
                            if (thisClassName.equals(this.className) || thisClassName.equals(this.className + ".class")) {   
                                this.jarFiles.add(filename);   
                            }   
                        }   
                    }   
                }   
            }   
        } catch (Exception e) {   
            e.printStackTrace();   
        }   
    }   
   
    public List getFilenames() {   
        return this.jarFiles;   
    }   
   
    protected String getClassName(ZipEntry entry) {   
        StringBuffer className = new StringBuffer(entry.getName().replace('/', '.'));   
        return className.toString();   
    }   
   
    public static void main(String args[]) {   
        FindJarOfClass findInJar = new FindJarOfClass("org.apache.tuscany.test.SCATestCase");   
        List jarFiles = findInJar.findClass("E:/yanhua/library/tuscany-jar", true);   
        if (jarFiles.size() == 0) {   
            System.out.println("Not Found");   
        } else {   
            for (int i = 0; i  
                System.out.println(jarFiles.get(i));   
            }   
        }   
    }   
}   


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/11872/showart_404902.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP