Java:如何获取运行时可用的类的完整列表?

时间:2019-02-01 10:06:12

标签: java classpath classloader

我正在寻找一种获取Java运行时中所有可用类和包的完整列表的方法。

我找到了许多解决方案,它们仅打印“ .jars”列表或包含类路径中加载的类的文件夹,但这对我来说还不够,我需要可用类的列表。

该怎么做?

1 个答案:

答案 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);
        }
    }