【问题标题】:What does combineaccessrules mean in Eclipse classpaths?Eclipse 类路径中的 combineaccessrules 是什么意思?
【发布时间】:2010-11-05 03:33:56
【问题描述】:

这多年来一直困扰着我,我想你们中的一个很好的人会知道 - 在 Eclipse 的 .classpath 文件中,classpathentry 元素的 combineaccessrules 属性实际用于什么?

我可以在 Java 构建路径配置对话框中看到它可以被操纵,但我想不出一个好的用例。如果我搞砸了设置,或者手动修改 .classpath 文件,它似乎没有任何效果。

我希望其他人已经很好地利用了它,我可以窃取他们的想法。基本上,这是我想抓的痒。

【问题讨论】:

    标签: java eclipse classpath


    【解决方案1】:

    通过正确使用访问规则,您可以防止使用“内部”和/或“非 api”类和方法。当您将一个类或包添加为 ForbiddenDiscouraged 时,当您使用指定包中的该类或类时,编译器会显示错误或警告。有关访问规则的详细介绍,您应该阅读this short article

    使用组合访问规则想象以下情况:

    • 您有 2 个项目,A 和 B。
    • 在项目 A 的类路径上有一个导出的 jar 文件。 jar 包含一些“stable api”、“unstable api”和“non-api”公共类。
    • 项目 B 依赖于项目 A。

    您不允许在项目 A 中使用“非 api”类,因此您对这些类/包设置了一些禁止访问规则。

    在项目 B 中,您也不允许使用“非 api”,但您确实希望在使用“不稳定 api”时收到警告。在这种情况下,在项目 B 中,如果您检查了将规则与导出项目条目的访问规则相结合,则只需设置额外的不鼓励访问规则。

    【讨论】:

    • 很好的答案,一个很好的用例。我不认为我最终会使用 eclipse 的那个特性,但很高兴终于知道它的用途。谢谢。
    • 如果您使用插件项目而不是普通的 Java 项目,那么 PDE 会根据您的清单文件自动为您生成这些访问规则。
    【解决方案2】:

    访问规则是方便的小东西,但很危险。它们从项目编译器中排除源文件,但将文件原封不动地保留在文件系统中。

    我工作的项目在我们的一个源文件夹中有一个引导类,但如果我们包含整个文件夹,项目类路径将无法编译(说来话长,构建过程会处理这个问题)。

    所以我们使用 eclipse 访问规则来排除它,它在开发过程中从不打扰我们。这意味着我们不能轻易更改代码,但它是多年未触及的类之一。

    从 JavaDoc 来看,Combine Access Rules 是一个真正的边缘用例。要使用它,您必须:

    • 一个项目的导出源条目中的访问规则
    • 从父项目到该项目的链接
    • 需要将子项目的访问规则与父项目结合起来

    我真的不能说它有什么用,但我希望至少能回答你的“它是什么”问题:)

    【讨论】:

      【解决方案3】:

      虽然我自己从来没有用过,但是可以在here找到一点点。

      项目导出条目的访问规则是否要与本条目的访问规则结合

      访问规则类似于包含“com/tests/**”

      【讨论】:

        猜你喜欢
        • 2011-09-02
        • 2022-09-28
        • 1970-01-01
        • 1970-01-01
        • 2012-03-12
        • 2023-04-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多