gpt4 book ai didi

Java 包结构与文件夹结构

转载 作者:行者123 更新时间:2023-11-30 02:58:00 26 4
gpt4 key购买 nike

我见过的所有 Java 项目都使用遵循包结构的文件夹结构。这会导致出现大量不包含任何文件的文件夹。

例如,包以 com.mydomain.mysystem.myutility 开头。这将导致文件夹 src\comsrc\com\mydomainsrc\com\mydomain\mysystem 不包含任何文件。 myutility 很可能也只包含文件夹。

很可能还会有一个包含名称 myutility 的项目文件夹,因此完整的文件夹路径可能是 myutility\src\main\java\com\mydomain\mysystem\myutility\其他文件夹

这种做法很常见,但它让我们想知道它有多有用。与不创建这些额外文件夹的情况相比,有什么好处?例如使用 myutility\src\main\java\otherfolder

它似乎同样有效,但它为每个人节省了额外的导航步骤。我可以用这两种方法编译 Java 源文件。

在项目中,通常所有源代码都位于 com\mydomain\mysystem 中。将这些“空”文件夹放入所有项目中有什么好处?

需要澄清的是,我并不是质疑包结构的有用性。 Maven 也很清楚。

问题是为什么我们使用在组织的整个存储库中通常相同的空文件夹。

最佳答案

源(和类)文件是这样组织的,以便 Java 编译器(和运行时环境)可以找到它们。

当Java编译器编译你的类时,它需要你的类所依赖的每个类的源文件或类文件,以便它可以检查该类是否存在,是否使用正确的参数调用了所有方法等。 ,如果找到源文件但没有找到类文件,或者类文件比源文件旧,它将编译您使用的类的源文件。

编译器当然可以只检查类路径的所有子文件夹,甚至整个磁盘,但这会花费很多时间。由于这种约定,编译器只需检查每个类路径条目的单个子文件夹。当然,你可以想出不同的解决方案来解决这个问题,但(当时)Sun 的人认为这是最好的选择。

当然,上述也适用于运行时加载的类文件,因此类文件也存储在类似的文件夹结构中。

另请注意,Java 应用程序和库通常打包为 Jar 文件(基本上是内部具有相同文件夹结构的 zip 文件),因此在许多情况下它们在文件系统中显示为单个文件。

关于Java 包结构与文件夹结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36717446/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com