java - 包P1和P2有依赖循环,但是P1的类没有使用P2(通过jdepend分析)

标签 java architecture dependencies package jdepend

一般包依赖问题

如果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/

相关文章:

java - 我可以对多个发布者和只有一个订阅者使用 Pub/Sub 模型吗?

Java 运行 .bat 文件时出现问题

java - 在计算器程序中实现模运算符

java - 如何在jsp中显示表格中的值?

java - 店面和后端有单独的项目还是单个项目更好?

dependencies - automake 中的 header 依赖项

java - 如何保持内存中的java列表与数据库中的表同步?

c# - 向我展示您的 Linq to SQL 架构!

javascript - 使用React,想要修复useEffect缺少依赖项错误

c# - 我应该如何管理/声明开源 C# 项目之间的依赖关系?