欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

根据类查找其所在的jar包

程序员文章站 2022-06-10 18:10:01
...

package text;

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 testFindJar {

 

public String className;

 

    public ArrayList jarFiles = new ArrayList();

 

    public testFindJar() {

    }

 

    public testFindJar(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[]) {

    //根据类查找其所在的jar包

    testFindJar findInJar = new testFindJar("com.ailk.filter.CommonFilter");

        List jarFiles = findInJar.findClass("E:/workspace/newlianc/wadelib_sale/web/WEB-INF/lib", 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));

            }

        }

    }

 

}

 

相关标签: 找jar包