java - 反射和多个 jar

标签 java reflection jar classloader reflections

我有两个 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);

如果我将 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/

相关文章:

java urlclassloader 的用法。只有在极少数情况下才需要吗?

c# - 如何反射(reflect) T 以构建查询的表达式树?

Java 配置构建路径或 WEB-INF/lib 文件夹

java - Talend 在 tTikaExtractor 上迭代

java - Spring-boot:需要一个名为 'entityManagerFactory' 的 bean,但找不到

Java Selenium 获取 JSON 响应正文

.net - 如何*有效*地在程序集中定位特定类型?

c# - vb.net C# 属性覆盖机制

java - 运行批处理文件来创建jar并通过java代码执行批处理文件?

java - Eclipse 导出的 Runnable Jar 无法找到外部库