模块 A 和 B 在 Java 9 中将包 some.package 导出到模块 C

Modules A and B export package some.package to module C in Java 9

我有三个模块 module-a、module-b 和 module-c。当我 运行 我的应用程序时,我得到以下信息:

Error occurred during initialization of boot layer java.lang.module.ResolutionException: Modules module-a and module-b export package some.package to module module-c

这是什么意思,考虑到 module-c 不导入 some.package 以及如何修复它?

看起来你已经创建了一个split package, meaning two modules (module-a and module-b in your case) contain the same package (some.package). The module system does not allow that. If you place both modules on the module path,无论包是否被导出或者第三个模块是否依赖于另外两个,你都会得到这个错误。

解决方法是,不要创建共享同一包的模块。这不仅是一种技术解决方案,它还通过确保每个模块都有特定且唯一的 API.

来改进设计