编程语言
首页 > 编程语言> > 解决java中的类名冲突

解决java中的类名冲突

作者:互联网

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

编辑:我忘了提到具有相同名称的两个类在不同的jar文件中.

编辑:Jon和Stephen都提供了相同的解决方案,但我只能标记一个作为答案.对不起:(.我已经投了两个答案了.

解决方法:

我相信JVM和类库假设类名在类加载器中是唯一的.因此,如果要为不同的类加载相同的类名,则需要使用不同的类加载器(例如,每个jar文件一个).

使用它们可能很棘手,但这就是你遇到的那种问题.

标签:java,classloader,conflict,class
来源: https://codeday.me/bug/20190722/1497452.html