Я пытаюсь получить классы, которые реализуют интерфейс в данном пакете, используя библиотеку отражений .
У меня есть следующий код:
package TestClass;
import org.reflections.Reflections;
import org.reflections.scanners.SubTypesScanner;
import java.io.DataInputStream;
import java.io.InputStream;
import java.net.URL;
import java.util.*;
public class Checks {
public static void main(String[] args) {
Reflections reflections = new Reflections("TestReflection.src.testclass");
try{
Set<Class<? extends CheckingClass>> classes = reflections.getSubTypesOf(CheckingClass.class);
}catch(Exception e){
System.out.println(e.toString());
}
}
}
Это дает мне эту ошибку: org.reflections.ReflectionsException: Scanner SubTypesScanner was not configured
Это удивляет меня, потому что я получил код из примера того, как используйте библиотеку отражений, чтобы она работала. Библиотека, я думаю, хорошо импортирована, потому что работают другие методы. Я много чего перепробовал и не могу заставить этот код работать.
Может быть, я упускаю важные детали. Есть идеи?
Спасибо
РЕДАКТИРОВАТЬ: Вот дерево моего проекта, так что вы можете увидеть, если мой путь хорош:
РЕДАКТИРОВАТЬ 2: Я изменил
Reflections reflections = new Reflections("TestReflection.src.testclass", new SubTypesScanner());
на
Reflections reflections = new Reflections("testclass", new SubTypesScanner());
, и у меня есть другая ошибка:
Exception in thread "main" java.lang.NoClassDefFoundError: javassist/bytecode/ClassFile
at org.reflections.adapters.JavassistAdapter.getOrCreateClassObject(JavassistAdapter.java:107)
at org.reflections.adapters.JavassistAdapter.getOrCreateClassObject(JavassistAdapter.java:34)
at org.reflections.scanners.AbstractScanner.scan(AbstractScanner.java:28)
at org.reflections.Reflections.scan(Reflections.java:270)
at org.reflections.Reflections.scan(Reflections.java:216)
at org.reflections.Reflections.<init>(Reflections.java:137)
at org.reflections.Reflections.<init>(Reflections.java:182)
at org.reflections.Reflections.<init>(Reflections.java:155)
at testclass.Checks.main(Checks.java:12)
Caused by: java.lang.ClassNotFoundException: javassist.bytecode.ClassFile
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:602)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
... 9 more
Process finished with exit code 1