combineaccessrules在Eclipse类路径中的含义是什么?

时间:2009-06-23 11:53:29

标签: java eclipse classpath

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

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

我希望其他人能够很好地利用它,我可以窃取他们的想法。基本上,这是一个我想要划伤的痒。

3 个答案:

答案 0 :(得分:26)

正确使用访问规则可以防止使用“内部”和/或“非api”类和方法。当您将类或包添加为 Forbidden Discouraged 时,编译器在您使用指定包中的类或类时会显示错误或警告。要更长时间地介绍访问规则,请阅读this short article

对于使用组合访问规则,请设想以下情况:

  • 您有2个项目,A和B.
  • 在项目A的类路径中,有一个导出的jar文件。该jar包含一些“稳定的api”,“不稳定的api”和“non-api”公共类。
  • 项目B取决于项目A.

您不允许在项目A中使用“non-api”类,因此您在这些类/包上设置了一些 Forbidden 访问规则。

在项目B中,您也不允许使用“non-api”,但在使用“unstable api”时,您确实希望收到警告。在这种情况下,在项目B中,如果检查将规则与导出的项目条目的访问规则结合起来,则只需设置其他气馁访问规则。

答案 1 :(得分:3)

访问规则是方便的小事,但很危险。它们从项目编译器中排除源文件,但在文件系统中保留文件。

我工作的项目在我们的一个源文件夹中有一个bootstrap类,但如果我们将整个文件夹包含在项目类路径中,它将无法编译(这是一个很长的故事,构建过程会处理这个)。

因此我们使用eclipse访问规则来排除它,它在开发过程中从不困扰我们。这意味着我们不能轻易地更改代码,但这是几年来没有触及过的那些类之一。

通过JavaDoc判断,组合访问规则是一个真正的边缘用例。要使用它,你必须:

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

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

答案 2 :(得分:1)

虽然我自己从未使用过它,但可以找到一点here

  

项目导出条目的访问规则是否应与此条目的访问规则相结合

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