我有一种情况,我必须加载一个命名的类。如果在我的类路径中有多个具有相同名称的类(例如,com.example.myclass
),我必须同时加载这两个类。我正在使用派生自java.lang.ClassLoader
的CustomLoader类的'loadClass()'方法。我没有改变父类的行为,只是简单地调用父类的方法。我的问题是,如果有两个同名的类,我只能加载其中的一个。我已扫描网络寻找解决方案,但没有找到任何解决方案。我通过创建一个新的类加载器实例发现了许多重载类的解决方案,但在我的情况下,新实例可能会再次加载第一个类。这个问题能解决吗?解决java中的类名冲突
编辑:我忘了提及这两个类具有相同名称在不同的jar文件。
编辑:无论乔恩和斯蒂芬作出了同样的解决方案,但我只能标记一个作为答案。对不起:(我已经投了两个答案,但。
我是Java新手。你能解释一下每个jar的classloader是什么意思吗?我如何为每个jar指定一个不同的类加载器? – 341008 2010-09-25 06:34:30
@Rajorshi:您将不得不创建一个指出每个jar文件的(比如说)URLClassLoader的新实例,并要求每个实例加载该类。但说实话,如果你是Java新手,我会开始尝试这种事情一段时间。我甚至建议有经验的Java开发人员应尽可能避免陷入这种情况。 – 2010-09-25 07:13:03
感谢您的提示。我不能拒绝实现这个模块,但高级java开发人员将会检查代码。如果我错过任何东西,他们应该能够发现它。 – 341008 2010-09-25 07:43:49