0

プロジェクトがローカルのクラスパスにあり、getClass().getClassLoader() を実行する場合にうまく機能する次のコードがあります。しかし、外部 jar から動的にロードしようとすると失敗します。

次のようなメソッド パラメーターの型である MyType の読み込みに失敗します。

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

このコードは、「org.reflections.ReflectionsException: could not get type for name 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);

問題はクラスローダーにあると思います。すべてのタイプを取得するように jar をロードする別の方法はありますか?

4

1 に答える 1