java - 在运行时在 Java 中查找具有相同全名的类
问题描述
a.jar
可以说我有一个带类的罐子com.company.ma.MyClass
package com.company.ma
public class MyClass {
public void someMethod() {
System.out.println("Hey");
}
}
b.jar
还有另一个带有类com.company.ma.MyClass
但实现不同的jar 。
package com.company.ma
public class MyClass {
public void anotherMethod() {
System.out.println("This is different");
}
}
这些类具有相同的完整限定名,但它们不同。
如何在类路径中找到具有给定完整限定名的所有类,说com.company.ma.MyClass
并打印它的位置?在这个例子中,我希望两个类com.company.ma.MyClass
在两个不同的 jar 中具有名称
解决方案
我认为每个(完全限定的)类名只能引用 JRE 中的一个类;例如看这个问题。所以你不能同时通过反射访问它们。
也许您可以编写自己的代码ClassLoader
来以您需要的任何方式捕获和处理冲突。
您还可以使用java.util.jar.JarFile
打开任何 .jar 文件并解析其清单,其中包含 .jar 中包含的所有 .class 文件的列表。
推荐阅读
- sql - 在 R 中的 SQL 脚本中使用的 R readline 提示
- django - Django Localization:如果嵌入了链接,我们如何正确翻译字符串?
- javascript - 在动态附加 Id 时得到插值 ({{}})
- c# - 如何动态加载 xunit 测试?
- java - 如何在 Kotlin 中实现时间调度器
- java - arrayListOf(), sortedWith, compareBy Java 等价物
- html - 使用 VBA 从亚马逊获取产品价格和名称
- java - hibernate.hbm2ddl.auto 影响当前数据库
- c# - 在 MySql bool 和 C# bool 之间转换的正确方法是什么?
- amazon-web-services - 通过简单 GSI 删除 DynamoDB 项目