我是 Java 9 的新手,正在观看 YouTube 上 Java 的模块化视频讲座。他们提到了模块化的 3 个好处 - 1. 没有丢失的依赖项 2. 没有循环依赖项 3. 没有拆分包。
据我了解拆分包是假设一个应用程序依赖于多个依赖项,假设包 abc.pqr.xyz 存在于 1 个以上的 jar 中。然后有可能该包中的某些类将从 jar1 中使用,而其他类则从 jar2 中使用。这可能会在运行时导致一些难以调试的问题。
视频说模块化解决了这个问题。但这就是我想要理解的?
假设有 test.module1 具有以下模块信息 -
module test.module1{
exports abc.pqr.xyz;
}
另一个具有以下模块信息的模块2-
module test.module2{
exports abc.pqr.xyz;
}
现在假设在我的应用程序中我添加了这两个模块的依赖项-
module test.myapp{
requires test.module1;
requires test.module2;
}
现在我再次有 2 个模块化依赖项,其中一些类可能会出现在这两个模块中。那么在运行时它将如何从哪个模块中获取类定义呢?Java 9 如何避免拆分包问题?