| « | November 2025 | » |  | 日 | 一 | 二 | 三 | 四 | 五 | 六 |   |  |  |  |  |  | 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 |  |  |  |  |  |  |  |  
  |    公告 |  
戒除浮躁,读好书,交益友  |    
 
 
 
 
 
| Blog信息 |  
| 
 blog名称:邢红瑞的blog 日志总数:523 评论数量:1142 留言数量:0 访问次数:9731259 建立时间:2004年12月20日   |   
 
  
 
  |    | 
  
| 
  [java语言]如何得到jar里面指定包名下的类文件 原创空间,  文章收藏,  软件技术 
邢红瑞 发表于 2010/4/23 18:16:48   |  
| 一开始,认为URLClassLoader可以解决,后来一想不必麻烦,其实就是路径转换的问题。
package test;
/** * Created by IntelliJ IDEA. * User: asiainfo * Date: 2010-4-22 * Time: 19:23:58 * To change this template use File | Settings | File Templates. */import java.util.jar.*;import java.util.*;import java.io.*;
public class PackageUtils {
 private static boolean debug = true;
 public static List getClasseNamesInPackage     (String jarName, String packageName){   ArrayList classes = new ArrayList ();
   packageName = packageName.replaceAll("\\." , "/");   if (debug) System.out.println        ("Jar " + jarName + " looking for " + packageName);   try{     JarInputStream jarFile = new JarInputStream        (new FileInputStream (jarName));     JarEntry jarEntry;
     while(true) {       jarEntry=jarFile.getNextJarEntry ();       if(jarEntry == null){         break;       }       if((jarEntry.getName ().startsWith (packageName)) &&            (jarEntry.getName ().endsWith (".class")) ) {         if (debug) System.out.println           ("Found " + jarEntry.getName().replaceAll("/", "\\."));         classes.add (jarEntry.getName().replaceAll("/", "\\."));       }     }   }   catch( Exception e){     e.printStackTrace ();   }   return classes;}
/****/  public static void main (String[] args){   List list =  PackageUtils.getClasseNamesInPackage        ("D:\\SSL VPN Proj\\bat\\Server.Box.jar", "cn");   System.out.println(list);     }} |    
 |   
 
  
  |