【问题标题】:Package structure should be same as directory structure in Java "always"?包结构应该与Java中的目录结构“总是”相同吗?
【发布时间】:2012-02-23 23:42:22
【问题描述】:

包结构应该与Java中的目录结构在Eclipse中看起来一样。 我试图浏览有关 Oracle Java 文档的正式文档,但在任何地方都找不到此规则

此规则是否扩展到其他 IDE,例如 Netbeans,还是 Java 语言本身的规则? 这条规则有多严格,可以偏离,为什么制定?

【问题讨论】:

    标签: java eclipse jakarta-ee


    【解决方案1】:

    它在JLS 中指定为编译器可能要求的规则:

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

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

    注意,默认情况下,javac 将生成类文件作为源文件的对等文件,而不考虑包结构;如果您指定-d,即使它与源结构不匹配,它也会生成适当的输出结构。

    【讨论】:

      【解决方案2】:

      也许你需要看看a good tutorial about packages。链接第一句:

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

        • 其他一些帖子提到 Java 语言规范不需要这个。
        • 是的。我说它应该(不是必须)匹配。
        • JLS 中的“可能”是为了不阻止某种用于管理 .java 和 .class 文件的自定义系统。例如,在过去,Visual Age for Java 将项目文件存储在各种数据库中。所有现代 Java 编译器、JRE 和 IDE 都需要文件夹结构来匹配包结构。我知道的唯一例外是针对特定的 .java 文件(而不是包含一堆 .java 文件的文件夹)调用 javac 。对快速实验之外的任何事情都没有用处。
        • 源文件(.java) 不需要与包结构匹配。 类文件 (.class) 应该匹配。
        【解决方案4】:

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

        package my.app;
        
        public class Tmp{
        
        }
        

        并从命令提示符编译它而不会出现错误。

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

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

        【讨论】:

          猜你喜欢
          • 2013-07-11
          • 2017-02-18
          • 1970-01-01
          • 1970-01-01
          • 2020-08-16
          • 1970-01-01
          • 1970-01-01
          • 2016-08-11
          • 2021-09-07
          相关资源
          最近更新 更多