奇怪的输出使用Reflections实用程序

时间:2014-05-24 23:03:42

标签: java google-reflections

我正在使用http://reflections.googlecode.com/实用程序

这是我尝试执行的方法

//只应将顶级模块添加到此列表

protected Set<Class<? extends Module>> discoverModulesOnClassPath() {

// Scan classpath to identify modules

Predicate<String> filter = new FilterBuilder().includePackage("org.appops.server.core.bindings") ;

Reflections reflections = new Reflections(new ConfigurationBuilder()

            .setScanners(new SubTypesScanner()).setUrls(asList(ClasspathHelper.forClass(Module.class))));

Set<Class<? extends Module>> guiceModules = reflections.getSubTypesOf(Module.class);

return guiceModules;

}

这是我的考试

@Test

public void testDiscoverModulesOnClassPath() {

AppOpsCoreServletConfig config = new AppOpsCoreServletConfig() ;

Set<Class<? extends Module>>  modules = config.discoverModulesOnClassPath() ; 

for ( Class m : modules){

System.out.println(m.getSimpleName());
}



} 

我在特定包中有3个自定义模块(已经交叉检查了路径)但是它打印了这个类列表

ProviderMethodsModule

AbstractModule

RootModule

PrivateModule

1 个答案:

答案 0 :(得分:0)

ClasspathHelper.forClass(Module.class)只返回Guice的jar,这意味着你的包不会被扫描。

您需要向ConfigurationBuilder添加更多网址。

你可以随时扫描所有内容(ClasspathHelper.forClassLoader())......