我通過servlet動態上傳jar並將其保存在我的WEB-INF/lib目錄中。 我想用我的@annotation註釋的所有類,從通過servlet動態上傳的jar中加載類
已經使用下面的反射代碼沒有任何的運氣..罐子的清單是readble但這些類不是..類列表是0
List<ClassLoader> classLoadersList = new LinkedList<ClassLoader>();
classLoadersList.add(ClasspathHelper.contextClassLoader());
classLoadersList.add(ClasspathHelper.staticClassLoader());
ConfigurationBuilder builder = new ConfigurationBuilder().setScanners(new SubTypesScanner(false), new ResourcesScanner(),
new TypeAnnotationsScanner());
Set<URL> set = ClasspathHelper.forClassLoader(classLoadersList.toArray(new ClassLoader[0]));
FilterBuilder filterBuilder = new FilterBuilder().include(FilterBuilder.prefix(exportPackage));
Reflections reflections = new Reflections(builder.setUrls(set).filterInputsBy(filterBuilder));
Set<Class<? extends Object>> classSet = reflections.getTypesAnnotatedWith(MyAnnotation.class);
什麼更改配置將有助於從動態上載的罐子得到的類..
我創建了一個URLClassLoader的,並把它添加到classLoadersList,但仍然還是問題。 。試圖加載一個類拋出ClassNotFoundException ..我也分開了jar的lib沒有存儲上傳的jar在一個單獨的文件夾..你能幫我一些示例代碼urlclassloader與思考..? –