Google Guava getTopLevelClasses returns 空集

Google Guava getTopLevelClasses returns empty set

我在互联网上到处搜索都无济于事。我正在尝试使用番石榴来获取我的包中的所有 类,但它没有按预期运行。它总是 returns 一个空集,因此无法对给定的结果做任何事情。系统变量或其他障碍会不会有问题?

这是我的一些代码。

        String packageName = "me.travja.package";
        ImmutableSet<ClassPath.ClassInfo> root = null;
        try {
            System.out.println(ClassPath.from(getClass().getClassLoader()));
            root = ClassPath.from(getClass().getClassLoader()).getTopLevelClasses();//.getTopLevelClassesRecursive(packageName);
        } catch (IOException e) {
            e.printStackTrace();
        }

        for (ClassPath.ClassInfo info : root) {


            System.out.println(info.getPackageName() + " -- " + info.getSimpleName());
        }

它永远不会到达最后一个 sout,因为它是空的,但是打印类路径的那个会打印 'com.google.common.reflect.ClassPath@33571c14',这不是很有用。但据我所知,它不应该更像我的应用程序目录吗?

感谢您对此的帮助。困扰我太久了。

编辑:我做了一些挖掘。如果我的文件路径不包含 Space,它似乎可以按预期工作。我读到一点这曾经是旧版本 Guava 的问题,但我什至尝试使用 Maven 并对最新版本的 Guava 进行着色。有什么办法可以解决这个问题,还是我只需要注意我的文件路径中从来没有 space?

在做了更多的挖掘之后,我使用的其他依赖项之一隐藏了旧版本的 Guava,这就是我的代码所使用的。结果,坏了。我使用了一个反编译器,所以我可以手动将 ClassPath class 从较新的 Guava 隐藏到我自己的代码中,然后导入它。现在完美运行。