Java包与文件夹结构有什么区别?

85
我想知道在Eclipse IDE用于Java EE开发中,文件夹结构和包之间有什么区别。
什么时候使用哪个以及为什么?
应该采取什么做法?
  • 创建一个文件夹结构,例如src/com/utils,然后在其中创建一个类
  • 创建一个包,例如src.com.util,并在其中创建一个类
如果我将来需要编写Ant脚本进行部署,哪个选项更好、更容易部署?
如果我选择文件夹结构,部署是否像从开发到目标部署的简单复制那样容易?
6个回答

62
如果您正确配置了设置,那么在src文件夹内添加一个文件夹就相当于从文件 > 新建包中添加一个包。
所以,您可以根据自己的喜好选择添加文件夹或创建包。另外,当您将内容放置在src文件夹下时,包名始于子文件夹。因此,src/com/naishe/test将成为包com.naishe.test

10
有人发疯了,将所有答案都点成了负一! - Nishant

18

基本上没有什么区别,两者是相同的。

在两种情况下,文件夹结构将是 src/com/utils

在两种情况下,您都需要提及。

package com.utils;

class中作为第一行

由于在实践中没有任何区别,所以它对ant脚本不会有任何影响。


Java中的包用于组合相关的类。可以将其视为文件目录中的文件夹。唉...为什么还需要引入另一个概念呢... - frankelot

17

包装帮助我们避免在使用与其他人相同的类名时发生类名冲突。例如,如果我们有一个名为"Vector"的类名,它的名称将与JDK中的Vector类冲突。然而,这种情况永远不会发生,因为JDK使用java.util作为Vector类的包名称(java.util.Vector)。因此,我们的Vector类可以命名为"Vector",或者我们可以将其放入另一个包中,例如com.mycompany.Vector,而无需与任何人争斗。使用包的好处体现在易于维护、组织和增加开发人员之间的协作。理解包的概念还将帮助我们更有效地管理和使用存储在jar文件中的文件。

请访问http://www.jarticles.com/package/package_eng.html 以获取有关包的更多信息。


不幸的是,这并不能证明我为什么需要在我的文件系统中创建com/mycompany/project/package/name/here子目录。难道没有将com/mycompany/project/package/name目录合并以节省输入并避免达到MAX_PATH的选项吗? - Dai

2

创建一个名为'src.com.util'的包

听起来像是个错误。包名应该是'com.util','src'是源文件夹的名称。

除此之外,我看不出你两个选择之间有什么区别。结果是一样的,对吧?只是通过GUI到达它的不同步骤。在Eclipse中创建新包的向导只是在源文件夹中创建适当的文件夹层次结构的包装器。

你根本不需要创建空包,你可以直接创建类(如果不存在,包将自动创建)。


1

一个包是自动创建的“源文件夹”,其中文件夹只是一个普通的文件夹。 当您编译Eclipse项目时,所有源文件夹中的文件都会被编译,但常规文件夹中的文件不会被编译(除非这些常规文件夹是a)。


0

文件夹结构或者更具体地说,Eclipse 中的源文件夹仅适用于 Eclipse,但是包是通用的,不受任何编辑器的限制。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接