栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

以编程方式分析jar文件

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

以编程方式分析jar文件

jar文件是具有特定模式的zip文件。您可以使用ZipFile和ZipEntry或其子类JarFile和JarEntry。

此代码(自定义类加载器的方法)将返回一个Map,其中包含您需要的每种“类”类型的数组。

public Map<String, List<Class<?>>> loadAndScanJar(File jarFile)        throws ClassNotFoundException, ZipException, IOException {    // Load the jar file into the JVM    // You can remove this if the jar file already loaded.    super.addURL(jarFile.toURI().toURL());    Map<String, List<Class<?>>> classes = new HashMap<String, List<Class<?>>>();    List<Class<?>> interfaces = new ArrayList<Class<?>>();    List<Class<?>> clazzes = new ArrayList<Class<?>>();    List<Class<?>> enums = new ArrayList<Class<?>>();    List<Class<?>> annotations = new ArrayList<Class<?>>();    classes.put("interfaces", interfaces);    classes.put("classes", clazzes);    classes.put("annotations", annotations);    classes.put("enums", enums);    // Count the classes loaded    int count = 0;    // Your jar file    JarFile jar = new JarFile(jarFile);    // Getting the files into the jar    Enumeration<? extends JarEntry> enumeration = jar.entries();    // Iterates into the files in the jar file    while (enumeration.hasMoreElements()) {        ZipEntry zipEntry = enumeration.nextElement();        // Is this a class?        if (zipEntry.getName().endsWith(".class")) { // Relative path of file into the jar. String className = zipEntry.getName(); // Complete class name className = className.replace(".class", "").replace("/", "."); // Load class definition from JVM Class<?> clazz = this.loadClass(className); try {     // Verify the type of the "class"     if (clazz.isInterface()) {         interfaces.add(clazz);     } else if (clazz.isAnnotation()) {         annotations.add(clazz);     } else if (clazz.isEnum()) {         enums.add(clazz);     } else {         clazzes.add(clazz);     }     count++; } catch (ClassCastException e) { }        }    }    System.out.println("Total: " + count);    return classes;}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/451477.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号