1

我有两个 jar 文件,让我们调用它们domain.jarscanner.jar. 在扫描仪 jar 中,我使用了 Reflections 库,如下所示:

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

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

我运行它java -cp domain.jar -jar scanner.jar

知道我做错了什么吗?从反射使用示例中,它支持多模块项目,所以这应该是可能的。

4

1 回答 1

3

-cp-jar选项是互斥的。要么使用-jar,并且类路径由 jar 文件和其清单中引用的所有其他 jar 文件组成,要么使用-cp并列出必须是类路径一部分的所有 jar。

关于 -jar 选项的文档说:

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

所以,试试

java -cp domain.jar;scanner.jar your.fully.qualified.MainClass
于 2013-10-31T12:23:04.890 回答