Netbeans 模块中的 Guava getTopLevelClasses 找不到 类

Guava getTopLevelClasses in Netbeans module fails to find classes

我正在尝试使用 Guava 在 Netbeans 中使用此模式查找 module/plugin 中的一个包中的所有 类:

ClassLoader cl = getClass().getClassLoader();
Set<ClassPath.ClassInfo> classesInPackage = ClassPath.from(cl).getTopLevelClassesRecursive(pack);

在项目中测试它时效果很好,但在部署模块时它总是出现 0 类。我尝试了各种类型的 ClassLoader、System 和 Thread.currentThread,但结果相同。我发现了一个与此相关的已知问题,但它适用于 Java 9 并且应该已修复。

类 在那里。我目前使用:

ClassLoader cl = getClass().getClassLoader();
Class c = cl.loadClass(className);

手动加载其中的一些。

编辑:我使用 Java 8 和 Guava 22

谢谢。

最后解决的办法还是比较简单的。我通过使用新的 URLClassloader 作为 "cl" 解决了这个问题。在我的具体情况下,我在 "cl" 链接到的类路径上加载了一个额外的 jar。

别忘了设置一个parent。