java - 我怎样才能用 Guava 获得给定包的所有类

标签 java reflection package guava

我正在处理一个 Maven 项目,我将 Guava 依赖项和其他项目的依赖项添加到我的 pom.xml 文件中。我想获取该项目的给定包的所有类,我已将其作为依赖项添加到我的 pom 中。
所以我试过这个:

public void getClassOfPackage() {

    final ClassLoader loader = Thread.currentThread()
            .getContextClassLoader();
    try {
        for (final ClassPath.ClassInfo info : ClassPath.from(loader)
                .getTopLevelClasses()) {

                System.out.println(info.getSimpleName());

        }
    } catch (IOException e) {
        e.printStackTrace();
    }

}

public static void main(String[] args) {
    new TestMain().getClassOfPackage();
}

我知道这是错误的,因为它在控制台中给出了:
HierarchicalConfigurationConverter
HierarchicalConfigurationXMLReader
HierarchicalINIConfiguration
SubsetConfiguration
SystemConfiguration...

我不知道在哪里可以指定我正在谈论的项目,以及如何只传递包名称并为我提供它包含的所有类。

最佳答案

我可以显示在同一个项目中的所有类,但对于在 pom.xml 中添加为依赖项的其他项目还没有:
我们在同一个项目中的解决方案:

 public void getClassOfPackage() {

    final ClassLoader loader = Thread.currentThread()
            .getContextClassLoader();
    try {

        ClassPath classpath = ClassPath.from(loader); // scans the class path used by classloader
        for (ClassPath.ClassInfo classInfo : classpath.getTopLevelClasses("org.mypackage")) {
          System.out.println(classInfo.getSimpleName()+" <==> "+classInfo.getPackageName());
        }
    } catch (IOException e) {
        e.printStackTrace();
    }

}

public static void main(String[] args) {
    new TestMain().getClassOfPackage();
}

关于java - 我怎样才能用 Guava 获得给定包的所有类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28327389/

相关文章:

java - 为什么抽象实现由 Map.values() 返回?

Java 反射 getDeclaredMethod 抛出 NoSuchMethodException

c# - 使用反射确定c#中某个类型使用的所有类型

c# - 根据值确定常量的名称

php - 在 ubuntu 12.04 上安装 apache 2.4 和 php 5.5

Java:跨包的 protected 访问

java - 在 native Java map reduce 中将 Parquet FIXED_LEN_BYTE_ARRAY 转换为 DECIMAL

java - 指定的队列不存在 - AWS.SimpleQueueService.NonExistentQueue 与 Spring-Boot

java.lang.NoClassDefFoundError : org/apache/http/client/HttpClient

java - C++:如何在独立的源文件上定义类,然后在主程序中使用它们?