« | September 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 访问次数:9703650 建立时间: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); }} |
|
|