我正在将项目从Java 8迁移到Java 11,而Java 9中引入的模块化让我很头疼。 情侣罐子的包装相同,但类不同。这给了我错误
module SomeModule reads package my.package from both ModuleA and ModuleB
我想知道如何处理这样的情况,因为并非所有jar都在我的控制之下,所以重构不是解决方案。
答案 0 :(得分:2)
一种方法是确保两个罐子都放在 The Unnamed Module 中的 classpath
上。但请注意
未命名模块导出其所有程序包。这使得灵活 移民... 但是,这并不意味着命名模块中的代码可以访问 输入未命名模块。
一个名为的模块实际上甚至 声明对未命名模块的依赖。这个限制是 故意的,因为允许命名模块依赖于任意 类路径的内容将使可靠的配置 不可能。
当然,理想的解决方案是进行自下而上的迁移,并确保没有两个模块向requires
两个模块公开相同的程序包。