一般包依赖问题
如果P1的类和接口(interface)都没有使用P2,在什么情况下包P1和P2之间会存在依赖循环? IE。 “隐性依赖”从何而来?
jdepend 的具体例子
jdepend 说我在 stsimulator
之间有包依赖和 stsimulator.ststraversal
, 但没有 stsimulator
的类或接口(interface)使用 stsimulator.ststraversal
的任何部分, 意思
- jdepend 在 Eclipse 中的 dependencies-explorer 是这么说的,并且
stsimulator
的所有类/接口(interface)既不导入 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 不分析源代码而是分析编译后的代码,我们的测试类不小心引入了包之间的幻象依赖关系。
关于java - 包P1和P2有依赖循环,但是P1的类没有使用P2(通过jdepend分析),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7741075/