Получить подтипы в Java с библиотекой Reflections - PullRequest
0 голосов
/ 03 марта 2020

Я пытаюсь получить классы, которые реализуют интерфейс в данном пакете, используя библиотеку отражений .

У меня есть следующий код:

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

Это удивляет меня, потому что я получил код из примера того, как используйте библиотеку отражений, чтобы она работала. Библиотека, я думаю, хорошо импортирована, потому что работают другие методы. Я много чего перепробовал и не могу заставить этот код работать.

Может быть, я упускаю важные детали. Есть идеи?

Спасибо

РЕДАКТИРОВАТЬ: Вот дерево моего проекта, так что вы можете увидеть, если мой путь хорош:

enter image description here

РЕДАКТИРОВАТЬ 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...