java - 解决java中的类名冲突

标签 java class classloader conflict

我有一种情况,我必须加载一个命名类。如果我的类路径中有多个同名类(例如,com.example.myclass),我必须同时加载它们。我正在使用派生自 java.lang.ClassLoader 的 CustomLoader 类的“loadClass()”方法。我没有改变父类的行为,只是调用父类的方法。我的问题是,如果有两个同名的类,我只能加载其中一个。我已经在网上扫描了解决方案,但没有找到任何解决方案。我找到了很多通过创建一个新的类加载器实例来重新加载类的解决方案,但在我的例子中,新实例可能最终会再次加载第一个类。这个问题能解决吗?

编辑:我忘了说这两个同名的类在不同的 jar 文件中。

编辑:Jon 和 Stephen 都给出了相同的解决方案,但我只能将一个标记为答案。抱歉 :(。不过,我对这两个答案都投了赞成票。

最佳答案

相信 JVM 和类库假定类名在类加载器中是唯一的。因此,如果您想为不同的类加载相同的类名,您将需要不同的类加载器(例如,每个 jar 文件一个)。

使用它们可能会很棘手,但这就是你遇到这类事情的问题。

关于java - 解决java中的类名冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3792745/

相关文章:

java - postgresql 驱动程序 9.4 和 Postgres 安装 9.6 的 UTF-8 序列无效

java - Android:从主 Activity 访问应用程序类链表

javascript - 在 javascript 中扩展类

java - "Relative"类属性引用

c++ - 定义 constexpr 静态数据成员

java - classloader:如何加载不同版本的jar

java - 四色定理的递归算法

java - “释放”Java 列表中的迭代器

java - 如何将 Maven 构建输出添加到插件类加载器?

java - Weblogic类加载