我不明白 src 文件夹和单独包的用途

新手上路,请多包涵

在过去的几个月里,我一直只将 Eclipse 用于 Python,现在我想开始将它用于 Java。

但是,根据我看过的教程,组织 Java 项目的正确方法是在名为 com.project 的源文件夹中创建一个包,并将所有类等名为 com.project.class 。您还可以制作类似于子目录的子包,例如 com.project.utilities.* 。按照这种约定,我不明白为什么要为每个项目创建多个包。由于所有代码都包含在这个结构中,那么 src 文件夹的作用是什么?

我希望我只是错误地认为这是构建 Java 项目的正常方式,因为它看起来很不方便。

另外,我还没有被这个骗过,但这不会让加载外部依赖项变得很痛苦吗?如果我在 src 和 bin 文件夹旁边放置了一个 img 文件夹,我是否必须使用 ..\img\* 来访问它?

原文由 Bibendum 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

是的,对于小型项目可能意义不大。你可以有:

 MyProject
|
+ - FileOne.java
+ - FileTwo.java
+ - FileThree.java

但是对于较大的项目,您可能需要分成属于不同类型功能的包和类。

例如核心 java 库有(仅举几例)

java.lang(包含核心类,如 Object、String、Integer、Boolean、StringBuilder) java.util(包含实用类,如 List、ArrayList、Date、Map、Timer 等) java.io(包含输入/输出类,如 File , InputStreamReader, BufferedReader 等

java.sql、java.swing、java.text 等

这样,您就可以将彼此相关的类“打包”在一起。

这些类的源代码按照惯例位于名为 src 的文件夹中

所以你会有:

 YourProject
|
+ - src
     |
     + packageA
     |
     + packageB

您可能还需要将源代码与编译文件分开,因此按照惯例使用 classes 文件夹。此外,您可能需要一个单独的文件夹来放置第 3 部分库,另一个用于图像、辅助文件或其他资源,另一个用于文档等。

所以一个典型的布局可能是:

 YourProject
|
+ - src/
+ - lib/
+ - classes/
+ - resources/
+ - conf/
+ - bin/
+ - doc/
+ - etc/

但当然,它只对大型项目有意义。

Web 应用程序通常还包含一个 WEB-INF 文件夹等。

如果您的项目只包含几个类,请不要担心,只使用一个文件夹即可,但最好知道其基本原理是什么。

原文由 OscarRyz 发布,翻译遵循 CC BY-SA 3.0 许可协议

不必 将所有内容都放在一个包中。对于非常小的应用程序,您可以将 java 源文件直接放在 src 目录中,这意味着您的类将属于“默认”包。但是大多数项目使用唯一的包名称以避免名称冲突,例如 java.util.Date 和 java.sql.Date 之间的名称冲突。

使用“src”目录是 IDE、构建工具和其他程序员都很容易理解的约定。如果您避免使用“src”,而是使用如下目录结构:

 com/project/MyClass.java
img/icon.jpg
...etc

那么您不能简单地告诉 IDE 在“com”文件夹中查找 java 源文件,因为那样它会将类解释为“project.MyClass”而不是“com.project.MyClass”。另一方面,您也不能告诉它在根文件夹中查找源文件,因为那样它会期望 img 文件夹包含 java 源。

原文由 Todd Owen 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题