1
以下のコードを使用して、指定されたパッケージ名内のすべてのクラスを検索しています。コードが自分のプロジェクトに直接配置されている場合、これはうまく動作します。しかし、私がまとめたCommons Jarからサービスを呼び出すことは、自分のプロジェクトからデータを返すことではありません。これは達成できますか?私はorg.reflection.Reflectionsライブラリを使用しています。パッケージ内のすべてのクラスを検索するリフレクションライブラリ
public Set<Class<?>> reflectPackage(String packageName){
List<ClassLoader> classLoadersList = new LinkedList<ClassLoader>();
classLoadersList.add(ClasspathHelper.contextClassLoader());
classLoadersList.add(ClasspathHelper.staticClassLoader());
Reflections reflections = new Reflections(
new ConfigurationBuilder().setScanners(
new SubTypesScanner(false),
new ResourcesScanner()).setUrls(ClasspathHelper.forClassLoader(classLoadersList.toArray(
new ClassLoader[0]))).filterInputsBy(
new FilterBuilder().include(FilterBuilder.prefix(packageName))));
return reflections.getSubTypesOf(Object.class);
}
Project Structure
Eclipse --- Security Base // Project
| |
| --- reflectPackage("com.app.controller") call
| // Note: this package is within this project, not the Commons project.
|
--- Commons // Project
|
--- Reflector // Class
|
--- reflectPackage // Method
ありがとうございます!これは私のためにはうまくいっていて、以前のソリューションよりもはるかに少ないコードです。 – jDub9