我有两个 jar 文件,我们称它们为 domain.jar
和 scanner.jar
。在扫描仪 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它支持多模块项目,所以这应该是可能的。
最佳答案
-cp
和-jar
选项是互斥的。您可以使用 -jar
,类路径由 jar 文件和其 manefest 中引用的所有其他 jar 文件组成,或者您使用 -cp
并列出所有 jar那必须是类路径的一部分。
The documentation关于 -jar 选项说:
When you use this option, the JAR file is the source of all user classes, and other user class path settings are ignored.
那么,试试
java -cp domain.jar;scanner.jar your.fully.qualified.MainClass
关于java - 反射和多个 jar ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19706205/