网站首页
JSP空间
动态资讯
开源项目
技术文档
资源下载
J2EE资源
客户论坛
在线支付
 
  技术文档>>JAVA>>新手入门>>基础入门>查看文档  
  在目录中查找类位于哪个jar包中     
  文章作者:未知  文章来源:水木森林  
  查看:92次  录入:管理员--2007-11-17  
 

作者: cherami

    做java开发的人可能都遇到过面对一大堆的jar包但是自己不知道需要的那些个类到底位于哪个jar包中,使用下面的代码,这个问题就可以迎刃而解了。
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 findinjar {
    public string classname;

    public arraylist jarfiles = new arraylist();

    public findinjar() {
    }

    public findinjar(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 < files.length; i++) {
                if (recurse && files[i].isdirectory()) {
                    searchdir(files[i].getabsolutepath(), true);
                } else {
                    string filename = files[i].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[]) {
        findinjar findinjar = new findinjar("javax.mail.session");
        list jarfiles = findinjar.findclass("d:/libs/", true);
        if (jarfiles.size() == 0) {
            system.out.println("not found");
        } else {
            for (int i = 0; i < jarfiles.size(); i++) {
                system.out.println(jarfiles.get(i));
            }
        }
    }
}

main方法中的findclass方法的第二个参数是是否对指定的目录递归进行处理,一般都会要这样做的吧。

原文地址:http://www.jiehoo.com/find-jar-through-class-name.htm

 
 
上一篇: 提高java技能的几种简单有效的方法    下一篇: aspectj: 通往aosd之路的最佳军火
  相关文档
java 程序初始化过程详解 11-17
在java中调用oracle的过程和函数 11-17
javascript:世界上误解最深的语言 11-17
实例讲解如何利用hibernate开发blog 03-24
使用jsp对文件下载的控制 11-17
主类型的过载 11-17
使用sqlmaps 进行对象关系映射 11-17
使用properties从文件获取属性 11-17
mercury推出增强j2ee软件性能组件 11-17
十四种java开发工具点评 11-16
整合java6脚本、groovy实现动态mvc模式 11-16
用struts实现模板 11-17
关掉那可恶的dos窗口 11-17
weblogic8中文显示乱码解决办法 11-17
ant的一些偏门技巧 11-17
轻松玩转java配置的classpath 11-17
简析java的xml编程 11-17
使用mascot capsule micro3d v3 api实现透明效果 11-17
百慕大银行客户自助业务方案 11-17
在java中编程实现数字签名系统 11-17
返回首页 | 关于我们 | J网章程 | JSP空间合租 | 客服中心 | 免责声明 | 常见问题 | 参观机房
本站主机空间代理至厦门市华众网络科技有限公司
《中华人民共和国增值电信业务经营许可证》
编号:闽B2-20050079
@2005-2008福建JSP技术网 版权所有 闽ICP备05000928号
技术电话:13616026886
邮箱:admin@fjjsp.com 站长QQ,点击这里给我发消息