我正在寻找一种获取Java运行时中所有可用类和包的完整列表的方法。
我找到了许多解决方案,它们仅打印“ .jars”列表或包含类路径中加载的类的文件夹,但这对我来说还不够,我需要可用类的列表。
该怎么做?
答案 0 :(得分:0)
下面的代码将为您提供您作为路径传递的外部jar的类名(完全限定)的列表
package Sample;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
public class Sample {
public static void main(String[] args) throws IOException {
List<String> classNames = new ArrayList<String>();
ZipInputStream zip = new ZipInputStream(new FileInputStream("C:\\Users\\foo\\Desktop\\foo.solutions.jar"));
for (ZipEntry entry = zip.getNextEntry(); entry != null; entry = zip.getNextEntry()) {
if (!entry.isDirectory() && entry.getName().endsWith(".class")) {
// This ZipEntry represents a class. Now, what class does it represent?
String className = entry.getName().replace('/', '.'); // including ".class"
classNames.add(className.substring(0, className.length() - ".class".length()));
}
}
System.out.println(classNames);
}
}