包结构应该与Java“always”中的目录结构相同?

时间:2012-02-23 15:29:26

标签: java eclipse java-ee

包结构应该与Eclipse中的Java目录结构相同。 我试图浏览有关Oracle Java文档的正式文档,但无处可查找此规则

此规则是否扩展到其他IDE(如Netbeans),或者这是Java语言本身的规则吗? 这个规则有多严格,是否可以偏离,为什么会这样做?

4 个答案:

答案 0 :(得分:3)

JLS中指定编译器可能需要:

  

存储在文件系统中的软件包可能对其编译单元的组织有一定的限制,以允许简单的实现轻松地查找类。

例如,如果您在命令行中为javac指定了所有源文件名,那么 不能遵循这些规则......但它几乎是普遍使用过,除了微小的测试之外,我不会梦想违反这条规则。

请注意,默认情况下,无论包结构如何,javac都会将类文件生成为源文件的对等项;如果指定-d,它将生成适当的输出结构,即使它与源结构不匹配。

答案 1 :(得分:1)

它不是特定于IDE的。目录结构和包结构应该相互匹配。您可以在Java规范和认证书籍中找到更多详细信息。

答案 2 :(得分:1)

也许您需要查看a good tutorial about packages。链接的第一句话:

  

Java平台的许多实现依赖于分层文件系统来管理源文件和类文件,尽管Java语言规范不要求这样做。

答案 3 :(得分:1)

不是真的。您可以拥有以下代码,而无需将其放在my/app文件夹

package my.app;

public class Tmp{

}

并在命令提示符下编译没有错误。

但是为了运行应用程序,类文件需要在包中提到的文件夹中。

正如Jon Skeet提到的更多用于组织目的,以便在存在冲突的类名时可以解决运行时间。