包P1和P2具有依赖循环,但没有P1类使用P2(由jdepend分析)

Dav*_*Far 1 java architecture dependencies jdepend package

一般包依赖问题

如果没有P1的类和接口使用P2,在什么情况下包P1和P2之间会有依赖循环?即"隐藏的依赖"来自何处?

jdepend的具体示例

jdepend说我在stsimulator和之间有一个包依赖stsimulator.ststraversal,但没有stsimulator使用任何类的部分或接口stsimulator.ststraversal,这意味着

  • Eclipse中的jdepend的依赖项 - 资源管理器就是这么说的
  • 所有类/接口stsimulator都不导入stsimuator.*也不使用字符串"ststraversal".

怎么可能?

我的包依赖循环的一部分由jdepend打印

--------------------------------------------------
- Package Dependency Cycles:
--------------------------------------------------

stsimulator
    |
    |   stsimulator.ststraversal
    |-> stsimulator


stsimulator.sts
    |
    |   stsimulator.interpreter.javacc
    |-> stsimulator
    |   stsimulator.ststraversal
    |-> stsimulator

stsimulator.ststraversal
    |
    |   stsimulator
    |-> stsimulator.ststraversal
Run Code Online (Sandbox Code Playgroud)

p12*_*12t 5

同样的事情发生在我们身上.方案如下:
我们在相同的包结构中但在不同的源目录中有测试类.实际代码和测试代码都被编译到同一个输出目录中(除非你另有说明,否则这是Eclipse中的默认值,我认为).由于JDepend不分析源代码而是分析编译代码,因此我们的测试类不小心引入了包之间的幻像依赖关系.