模块依赖关系的解释Java

时间:2013-05-17 01:39:36

标签: java dependencies

我确信这可能是一个重复的问题,但我正在努力理解为什么......

  • A,B和C是普通的旧Java模块 - A和B是库,C是应用程序。

  • 如果B依赖于A

  • 和C取决于B

  • 为什么我必须在C的依赖项中同时包含A和B?

我真的不是在寻找建议 - 我在项目中只有5个模块,所以没什么大不了的。我只是好奇为什么会这样(或者我错过了一些明显的东西)。

1 个答案:

答案 0 :(得分:1)

需要考虑两种依赖项 - 项目依赖项和运行时依赖项。

运行时依赖是最简单的:为了运行C,你需要A和B都有JAR,因为没有A,B就无法运行。 Java模块类似于其他编译语言中的动态库(与静态库相对)。编译B时,编译器不会将A的类的副本包含在B中:它假定A,B的依赖项在运行时可用。

项目依赖性不那么简单:严格来说,你不需要包含在C的依赖项列表中。大多数开发环境都会为你找出传递依赖,所以当A更改时, B会重新编译,然后C会重新编译以响应B的重新编译。