我正在尝试使用Guava使用这种模式在Netbeans的模块/插件中查找包中的所有类:
ClassLoader cl = getClass().getClassLoader();
Set<ClassPath.ClassInfo> classesInPackage = ClassPath.from(cl).getTopLevelClassesRecursive(pack);
在项目内部进行测试时效果很好,但在部署模块时总是会出现0个类。我尝试了各种类型的ClassLoaders,System和Thread.currentThread但结果相同。我发现了一个与此相关的已知问题,但它适用于Java 9,并且据称已修复。
课程在那里。我目前使用:
ClassLoader cl = getClass().getClassLoader();
Class c = cl.loadClass(className);
手动加载其中一些。
编辑:我使用Java 8和Guava 22
感谢。
答案 0 :(得分:0)
最后,解决方案非常简单。我通过使用新的URLClassloader作为“ cl”解决了它。在我的特定情况下,我在与“ cl”链接的类路径上加载了另一个jar。
别忘了设置父母。