在我的项目中,我有2个子模块,我们称它们为模块A和模块B。他们都有com.example.myclass.java的结构。
我有第三个模块C,我想使用a和b。
的类但是,当我尝试这样做时,我只能从下添加的第一个模块中实现类。
是否有一种方法
首先,这听起来像是我的设计缺陷,因为在软件包级别上没有相同的软件包名称声音,您在maven模块级别上已经完成了,因此不表示该级别包装级别上也相同的隔离级别。如果您有不同的课程组,通常会发生这种情况...除此之外,如果您拥有完全相同的软件包和类名称,这根本是不可能的,因为className必须在此处违反的软件包中是唯一的。结果将在类Path上有两个不同的JAR,提供同一类。真正使用的类取决于哪个jar在类路径上首先是偶然的,因此无法预测。
OSGI在这里无济于事,因为您在这里遇到了相同的问题,因为您想从不同的捆绑包中访问相同的类,而无法解决。此外,在JDK 9中,这都无法使用,这两种类都必须公开(与OSGI相同(,这也将失败。
如果两个类都具有相同的名称,则必须更改其中一个类的软件包名称。否则,就无法导入两个类。
另一个解决方案是更改其中一个类的类名。