Google размышления не разрешают мои параметры типа на аннотированных методах

У меня есть следующий код, который хорошо работает, если проект находится в моем classpath локально, и я делаю getClass(). GetClassLoader(). Но когда я пытаюсь загрузить динамически из внешнего банку, это не удается.

Это не в состоянии загрузить MyType, который является типом на параметре метода как это:

@MyAnnotation("FOO.BAR")
public Object echo(@Valid MyType param) throws Exception {
    return...;
}

Этот код завершится с ошибкой "org.reflections.ReflectionsException: не удалось получить тип для имени MyType":

myLoader = new URLClassLoader(new URL[]{new URL("file:///"+jarfile)}); 
myLoaders.Add(myLoader);
ConfigurationBuilder builder = new ConfigurationBuilder()
    .addClassLoaders(loaders)
    .setScanners(new MethodAnnotationsScanner())
    .setUrls(ClasspathHelper.forPackage(myPackage, myLoaders));
Reflections reflections = new Reflections(builder);
return  reflections.getMethodsAnnotatedWith(MyAnnotation.class);

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

1 ответ

Я думаю, что я просто решил это, используя forClassLoader вместо forPackage.

Другие вопросы по тегам