通用软件包依赖问题

在什么情况下,如果P1的类和接口都没有使用P2,那么在程序包P1和P2之间会存在一个依赖循环吗?即“隐藏的依赖关系”从何而来?

 jdepend的具体例子

jdepend说我在stsimulatorstsimulator.ststraversal之间有程序包依赖关系,但是stsimulator的任何类或接口都不使用stsimulator.ststraversal的任何部分,这意味着


Eclipse中的jdepend的dependency-explorer就是这样,并且
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

最佳答案

同样的事情发生在我们身上。情况如下:
我们在相同的包结构中但在不同的源目录中有测试类。实际代码和测试代码都被编译到相同的输出目录中(我认为这是Eclipse中的默认值,除非您另行指定)。由于JDepend不会分析源代码,而是分析编译后的代码,因此我们的测试类意外地在包之间引入了幻影依赖。

10-05 20:10