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

时间:2010-07-12 03:19:46

标签: java eclipse

过去几个月我一直只在python中使用eclipse,我想开始在java中使用它。但是,根据我看过的教程,组织java项目的正确方法是在名为的源文件夹中创建一个包,例如com.project,并将所有类命名为{ {1}}。您还可以创建与子目录类似的子包,例如com.project.class。有了这个约定,我不明白为什么我会为每个项目创建多个包。由于所有代码都包含在此结构中,src文件夹的用途是什么?

我希望我对构建java项目的正常方法感到错误,因为它看起来很不方便。

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

3 个答案:

答案 0 :(得分:13)

是的,对于小型项目可能没有多大意义。你可能只有:

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

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

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

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

java.sql,java.swing,java.text等等

这样,你就“捆绑”了彼此相关的类。

这些类的源代码按照惯例在名为src

的文件夹中

所以你会:

YourProject 
|
+ - src 
     |
     + packageA
     |
     + packageB

您可能还需要将源代码与已编译文件分开,因此约定会使用classes文件夹。此外,您可能需要一个单独的文件夹来放入第三部分库,另一个用于资源,如图像,辅助文件或其他,不同的文档等。

所以典型的布局可能是:

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

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

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

如果您的项目只包含几个类,请不要担心并使用单个文件夹,但很高兴知道它的基本原理。

答案 1 :(得分:3)

我能理解为什么这对小型项目来说似乎不方便。但是,如果您必须处理包含数百(或数千)个源文件的项目,那么拥有直观的子包是保持一切有条理的绝对必要条件。

至于根据源文件所在的相对路径加载外部依赖项,这一切都取决于编译的应用程序的组织方式。用你所描述的“.. \ img”引用资源并不常见。

答案 2 :(得分:2)

没有将所有内容放入包中。对于非常小的应用程序,您可以直接将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源。