Java Intellij依赖项查看器和包循环依赖项

Java Intellij依赖项查看器和包循环依赖项,java,intellij-idea,dependencies,Java,Intellij Idea,Dependencies,在我的编程生涯中,我一直认为循环依赖性如下: 给定的 包装1 包装2 子包2 包装3 如果 package1中的类引用package2中的类 来自package2的类引用来自package3的类 package3中的类引用package1中的类 然后 项目包含循环依赖项package1>package2>package3>package1 当Intellij的dependency viewer告诉我: 如果 package1中的类引用package2中的类 子包2中的类引用了包3中的类

在我的编程生涯中,我一直认为循环依赖性如下:
给定的

  • 包装1
  • 包装2
    • 子包2
  • 包装3
如果

  • package1中的类引用package2中的类
  • 来自package2的类引用来自package3的类
  • package3中的类引用package1中的类
  • 然后
    项目包含循环依赖项package1>package2>package3>package1

    当Intellij的dependency viewer告诉我:

    如果

  • package1中的类引用package2中的类
  • 子包2中的类引用了包3中的类
  • package3中的类引用package1中的类
  • 然后
    项目包含循环依赖项package1>package2>package3>package1


    请任何人解释一下循环依赖的严格定义是什么,Intellij为什么会显示出如此奇怪的结果?谢谢。

    依赖项是可传递的,因此由于依赖子包2,而子包2又依赖于package3,因此package2本身依赖于package3,从而形成与示例1完全相同的图。我更惊讶的是,其他工具没有将其视为一个圆,因为IntelliJ在这里是正确的。

    您的意思是说,您的第一个示例在IntelliJ的视图中不符合循环依赖关系的条件吗?或者你对第二个例子感到惊讶吗?@kaqao第二个。我很惊讶Intellij将第二个示例视为循环依赖项。好吧,依赖项是可传递的,因此由于依赖于子包2,而子包2又依赖于package3,因此package2本身依赖于package3,从而形成与示例1完全相同的图。我更惊讶的是,其他工具没有将其视为一个圆。为什么你认为这些例子根本不同?@kaqqao:这应该是答案。问题是模糊的,一个人不能超越你们的断言。@Jayan不知道为什么你们觉得这很模糊。显然,检查循环依赖性的工具之间存在误解。他们的结果不一样。实际的问题实际上是在我们的内部工具中,它只显示直接循环和跳过传递循环。所以当旧的jdepend和我们的内部工具有相同的结果时,我真的很惊讶。谢谢你的指点帮助!