在Java中,我应该创建一个新的包,文件夹还是源文件夹?

时间:2013-04-12 11:11:01

标签: java eclipse

有几个关于SO的问题,但是我对Java开发并不熟悉,而且我也不知道正确的方法。

我有一个C#解决方案,包含两个项目(我的应用程序和一个单元测试项目),在应用程序中,大多数东西都放在文件夹中,例如。接口,例外等。

我试图在Java / Eclipse中重新创建它,但我不知道如何。我最终得到了很多包,听起来真的很糟糕。我还尝试添加一个源文件夹,但最终还是在包之外。

有人能指出我正确的方向吗?

即,我应该使用哪些来表示我的单元测试项目/单元测试集,以及仅用于组织内容的子文件夹。

编辑:它还表示不建议使用默认包。我该怎么办?

编辑2:这是它的样子。这看起来有点模糊吗?我原来的C#解决方案在右边。

My Layout

4 个答案:

答案 0 :(得分:4)

在典型的java eclipse项目中,您将拥有一个或多个源文件夹(例如,一个用于应用程序代码,一个用于您的单元测试)。

每个文件夹都包含一个包树,通常从您的基础包开始,例如com.mycompany.myapp

为了避免名称冲突,软件包名称通常以作为代码作者的实体的域名开头,从顶级域开始向后(更一般到更具体)。这样,每个类的完全限定名称都是唯一的。例如,如果Google创建了一个名为List的类,它将被称为com.google.List,并且不会与现有的java.util.List接口冲突。

您可以在此基础包中包含无限数量的包,例如:

com.mycompany.myapp.persistence
com.mycompany.myapp.domain
com.mycompany.myapp.services
com.mycompany.myapp.web

这完全取决于您的项目以及您希望组织代码和课程的方式。

在逻辑层面,包以点作为分隔符命名。它们包含java类。

在磁盘级物理上,每个包都是一个目录。 java类包含在.java文件中(最常见的是每个文件一个类)。

在Eclipse中,“源文件夹”是项目中的一个文件夹,Eclipse已知该文件夹包含java源文件。在构建项目时,它将被编译包含在输出中(例如JAR文件)。

在Eclipse中,您通常在逻辑级别查看它们,显示包。当您告诉Eclipse“创建一个新包”时,它将为您创建目录。例如,如果您告诉它创建com.mycompany.myproject包,它将自动创建一个com文件夹,其中包含一个包含mycompany文件夹的myproject文件夹。

答案 1 :(得分:1)

在java源代码树结构中必须匹配包结构

所以foo.bar包必须在

中列出

的src /富/酒吧

也可能不建议使用默认包 - 但您仍然可以使用它 - 更好地将东西放入包装中

答案 2 :(得分:0)

在java中,不同的项目开发结构根据项目类型流动。 因此,当您是java和Eclipse的新手时,最好安装maven插件并创建maven项目,并根据您的项目类型选择原型,如独立或基于Web。 maven插件将创建项目结构,包括包,测试包源文件夹等。您可以从this获得有关项目结构的更多信息

答案 3 :(得分:0)

使用默认包可能会创建命名空间冲突。想象一下,您正在创建一个包含MyClass类的库。有人在他的项目中使用你的库,并且在他的默认包中也有一个MyClass类。编译器应该怎么做? Java中的包实际上是一个完全标识您的项目的命名空间。因此,在现实世界的项目中不使用默认包很重要。