Java google reflections不解析带注释方法上的我的类型参数

Java google reflections不解析带注释方法上的我的类型参数,java,annotations,urlclassloader,reflections,Java,Annotations,Urlclassloader,Reflections,如果项目在本地的类路径中,并且我执行getClass().getClassLoader(),那么我有以下代码可以很好地工作。但当我尝试从外部jar动态加载时,它失败了 它无法加载MyType,MyType是方法参数上的类型,如下所示: @MyAnnotation("FOO.BAR") public Object echo(@Valid MyType param) throws Exception { return...; } 此代码将因“org.reflections.Reflecti

如果项目在本地的类路径中,并且我执行getClass().getClassLoader(),那么我有以下代码可以很好地工作。但当我尝试从外部jar动态加载时,它失败了

它无法加载MyType,MyType是方法参数上的类型,如下所示:

@MyAnnotation("FOO.BAR")
public Object echo(@Valid MyType param) throws Exception {
    return...;
}
此代码将因“org.reflections.ReflectionsException:无法获取名称MyType的类型”而失败:


我相信问题在于类加载器。有没有另一种方法来加载jar,使其能够拾取所有类型?

我想我只是通过使用forClassLoader而不是forPackage解决了这个问题。

您是如何加载/启动这个程序的?其中包含
MyType
的Jar文件在哪里?可执行文件使用java-Jar运行。然后它加载一个外部jar进行反射,如上面的代码所示。我不知道是否发生了变化,或者是否出现了有史以来最严重的误报,但即使使用forClassLoader,它现在也不起作用。在这一点上,我被难住了,认为这是谷歌反射库的一个局限性。我确信他们改变了maven central上的0.9.9-RC,打破了我。我刚刚更新到0.9.10,它又开始工作了!
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);