Java 无法使用反射获取包的类
从上图中,当我试图获取“tests”下的所有类时,我得到的是空数组Java 无法使用反射获取包的类,java,reflection,reflections,Java,Reflection,Reflections,从上图中,当我试图获取“tests”下的所有类时,我得到的是空数组 Reflections reflections = new Reflections("tests"); //Reflections reflections = new Reflections("src.test.java.tests"); Tried but still empty array Set<Class<? extends Object&g
Reflections reflections = new Reflections("tests");
//Reflections reflections = new Reflections("src.test.java.tests"); Tried but still empty array
Set<Class<? extends Object>> allClasses = reflections.getSubTypesOf(Object.class); //Getting empty array here
Class[] arrayCls=new Class[allClasses.size()];
allClasses.toArray(arrayCls);
反射=新反射(“测试”);
//反射=新反射(“src.test.java.tests”);已尝试但仍为空数组
Set这个解决方案对我有效,我在src文件下有一个打包的命名测试,它直接包含类和带有类的子包,并返回到包含相应类的正确集合。Reflections构造函数的第一个参数必须是您的packageName,最后附加一个“.”:
Reflections reflections = new Reflections("testing.", new SubTypesScanner(false));
Set<Class<?>> classes = reflections.getSubTypesOf(Object.class);
反射反射=新反射(“测试”),新子扫描(假);
设置请参见此处的可用答案我想您需要添加一个类扫描程序或类似程序。@mazenaissa尝试了页面中提到的代码,但仍然得到空的类数组。我找到了解决方案,请参见下面的答案。@mazenaissa我在下面尝试了,但没有帮助。你能告诉我哪里出了问题吗//反射反射=新反射(“src.test.java.tests.”,新的子扫描(false));反射反射=新反射(“src.test.java.tests.”,新的子扫描(false));设置
final ClassLoader loader = TestNGRunner.class.getClassLoader();
Set<Class<? extends Object>> allClasses = new HashSet<Class<? extends Object>>();
for (final ClassPath.ClassInfo info : ClassPath.from(loader).getTopLevelClasses()) {
if (info.getName().startsWith("tests.")) {
allClasses.add(info.load());
}
}