过去几个月我一直只在python中使用eclipse,我想开始在java中使用它。但是,根据我看过的教程,组织java项目的正确方法是在名为的源文件夹中创建一个包,例如com.project
,并将所有类命名为{ {1}}。您还可以创建与子目录类似的子包,例如com.project.class
。有了这个约定,我不明白为什么我会为每个项目创建多个包。由于所有代码都包含在此结构中,src文件夹的用途是什么?
我希望我对构建java项目的正常方法感到错误,因为它看起来很不方便。
另外,我还没有对此愚弄过,但这不会让加载外部依赖变得痛苦吗?如果我在src和bin文件夹旁边放置了一个img文件夹,我不是必须使用“.. \ img *”来访问它吗?
答案 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源。