WEB开发网
开发学院WEB开发Jsp 在目录中查找类位于哪个jar包中 阅读

在目录中查找类位于哪个jar包中

 2008-01-05 08:26:45 来源:WEB开发网   
核心提示:作者: Cherami 做java开发的人可能都碰到过面对一大堆的jar包但是自己不知道需要的那些个类到底位于哪个jar包中,使用下面的代码,在目录中查找类位于哪个jar包中,这个问题就可以迎刃而解了,import java.io.File;import java.util.ArrayList;

作者: 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();
     }
   }


Tags:目录 查找 位于

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接