当不同的依赖包中有两个同名类时,如何指定预期的java类?

时间:2014-06-10 14:45:43

标签: java eclipse deployment

我在我当前的包中编码,并将两个包/项目作为依赖项,命名为package-A和package-B。

在package-A中,有一个java类:“com.xx.cc.java” 在包B中,有一个同名的java类:“com.xx.cc.java” (这两个java类中的字段和函数不同)

我想在package-A中导入“com.xx.cc.java”,但是,eclipse会自动导入包-B中的“com.xx.cc.java”,我真的很无聊并且不知道。

是否有指定我要导入java类的包?

提前多多感谢。

3 个答案:

答案 0 :(得分:2)

理论上,您可以使用不同的类加载器为每个库解决此问题。但是你不能把它们都放到应用程序类路径中。其中至少有一个应该超出常规应用程序类路径,您应该使用自定义类加载器实现对它的访问。

如何在日食中解决这个问题?您可以创建2个项目。其中一个取决于图书馆A,另一个取决于图书馆B."其他" project将实现我已经提到的自定义类加载器。

但是:你真的需要这个吗?这些奇怪的库将不同的类放在同一个包中是什么?从一开始这种情况听起来很糟糕。

答案 1 :(得分:0)

当存在多个具有相同完全限定名称的类时,您将很难在运行时确定行为。您可以尝试控制类路径上的jar /资源的顺序。但是,听起来好像你是在osgi环境中运行,你几乎无法控制类路径上的项目顺序。

答案 2 :(得分:-2)

是的,有一种方法可以访问位于不同包中的同名类。

假设class Apackage1中的package2。然后,要访问另一个类中的两个classes A,请执行以下操作:

  • 导入两个包:package1& package2

  • 将这些课程用作package1.A& package2.A

希望它对你有所帮助。