思考和多个罐子

时间:2013-10-31 12:11:04

标签: java reflection jar classloader google-reflections

我有两个jar文件,我们称之为domain.jarscanner.jar。在扫描仪罐子里我使用了这样的Reflections库:

Reflections reflections = new Reflections(new ConfigurationBuilder().addUrls(ClasspathHelper.forPackage(packageName)).setScanners(new SubTypesScanner(false)));
Set<Class<?>> subTypesOf = reflections.getSubTypesOf(Object.class);

如果我将packageName指向scanner.jar内的包,一切正常,但如果我尝试从domain.jar中找到类,它总是返回空集。

我用java -cp domain.jar -jar scanner.jar

运行它

知道我做错了什么吗?从Reflections用法examples它支持多模块项目,所以这应该是可能的。

1 个答案:

答案 0 :(得分:3)

-cp-jar选项是互斥的。您使用-jar,并且类路径由jar文件和其manefest中引用的所有其他jar文件组成,或者您使用-cp并列出必须属于类路径的所有jar。

关于-jar选项的

The documentation说:

  

使用此选项时,JAR文件是所有用户类的源,并忽略其他用户类路径设置。

所以,试试

java -cp domain.jar;scanner.jar your.fully.qualified.MainClass