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

Pav*_*l_K 6 java java-9 java-module

我有三个模块module-a,module-b和module-c.当我运行我的应用程序时,我得到以下内容:

初始化引导层时发生错误java.lang.module.ResolutionException:模块module-a和module-b导出包some.package到模块module-c

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

Nic*_*lai 5

看起来你已经创建了一个拆分包,这意味着两个模块(在你的情况下是module-amodule-b)包含相同的包(some.package).模块系统不允许这样做.如果将两个模块放在模块路径上,无论是否导出包或第三个模块是否依赖于其他模块,都会出现此错误.

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

  • 似乎它阻止了对来自相同包但来自不同 jar 的方法的包级访问。这种方式在库中非常流行,这个限制在 java 9 上打破了它们。 (2认同)
  • 它们在Java 9上没有被破坏,它们在类路径上运行得非常好.另一方面,要被视为模块,必须修补这些分裂. (2认同)
  • 我知道我不应该创建不共享同一包的模块。但是,如果我使用可能也使用我使用的其他库的外部库,我该如何跟上呢? (2认同)