从2个不同的模块中导入具有相同名称和软件包的2个不同类



在我的项目中,我有2个子模块,我们称它们为模块A和模块B。他们都有com.example.myclass.java的结构。

我有第三个模块C,我想使用a和b。

的类

但是,当我尝试这样做时,我只能从下添加的第一个模块中实现类。

是否有一种方法

首先,这听起来像是我的设计缺陷,因为在软件包级别上没有相同的软件包名称声音,您在maven模块级别上已经完成了,因此不表示该级别包装级别上也相同的隔离级别。如果您有不同的课程组,通常会发生这种情况...除此之外,如果您拥有完全相同的软件包和类名称,这根本是不可能的,因为className必须在此处违反的软件包中是唯一的。结果将在类Path上有两个不同的JAR,提供同一类。真正使用的类取决于哪个jar在类路径上首先是偶然的,因此无法预测。

OSGI在这里无济于事,因为您在这里遇到了相同的问题,因为您想从不同的捆绑包中访问相同的类,而无法解决。此外,在JDK 9中,这都无法使用,这两种类都必须公开(与OSGI相同(,这也将失败。

如果两个类都具有相同的名称,则必须更改其中一个类的软件包名称。否则,就无法导入两个类。

另一个解决方案是更改其中一个类的类名。

最新更新