如何在运行时从文件夹或JAR加载类?我正在尝试创建一个Java工具,它将扫描Java应用程序的结构并提供一些有意义的信息。为此,我需要能够从项目位置(JAR / WAR或只是一个文件夹)扫描所有.class文件,并使用反射来阅读他们的方法。事实证明这几乎是不可能的。我可以找到许多基于URLClassloader的解决方案,它允许我从目录/存档加载特定的类,但没有一个允许我加载类而没有关于类名或包结构的任何信息。编辑:我想我的说法很差。我的问题不是我无法获得所有的类文件,我可以通过递归等来做到这一点并正确定位它们。我的问题是为每个类文件获取一个Class对象。
3 回答
湖上湖
TA贡献2003条经验 获得超2个赞
列出jar文件中的所有类。
public static List getClasseNames(String jarName) { ArrayList classes = new ArrayList(); if (debug) System.out.println("Jar " + jarName ); try { JarInputStream jarFile = new JarInputStream(new FileInputStream( jarName)); JarEntry jarEntry; while (true) { jarEntry = jarFile.getNextJarEntry(); if (jarEntry == null) { break; } if (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;}
添加回答
举报
0/150
提交
取消