是否可以导入两个具有相同包装的罐子?

时间:2018-11-29 15:32:46

标签: java java-9 java-module java-11

我正在将项目从Java 8迁移到Java 11,而Java 9中引入的模块化让我很头疼。 情侣罐子的包装相同,但类不同。这给了我错误

module SomeModule reads package my.package from both ModuleA and ModuleB

我想知道如何处理这样的情况,因为并非所有jar都在我的控制之下,所以重构不是解决方案。

1 个答案:

答案 0 :(得分:2)

一种方法是确保两个罐子都放在 The Unnamed Module 中的 classpath 上。但请注意

  

未命名模块导出其所有程序包。这使得灵活   移民...   但是,这并不意味着命名模块中的代码可以访问   输入未命名模块

     

一个名为的模块实际上甚至   声明对未命名模块的依赖。这个限制是   故意的,因为允许命名模块依赖于任意   类路径的内容将使可靠的配置   不可能。

当然,理想的解决方案是进行自下而上的迁移,并确保没有两个模块向requires两个模块公开相同的程序包。