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

发布于 2024-12-09 08:11:46 字数 937 浏览 0 评论 0原文

一般包依赖问题

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

General package dependency question

Under what circumstances can there be a dependency cycle between packages P1 and P2 if no class and interface of P1 uses P2? I.e. where does the "hidden dependency" come from?

Concrete example with jdepend

jdepend says I have a package dependency between stsimulator and stsimulator.ststraversal, but no class or interface of stsimulator uses any part of stsimulator.ststraversal, meaning

  • jdepend's dependencies-explorer in Eclipse says so, and
  • all classes/interfaces of stsimulator neither import stsimuator.* nor use the string "ststraversal".

How can that be?

Part of my package dependency cycle as printed by jdepend

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

stsimulator
    |
    |   stsimulator.ststraversal
    |-> stsimulator


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

stsimulator.ststraversal
    |
    |   stsimulator
    |-> stsimulator.ststraversal

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

骑趴 2024-12-16 08:11:46

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

The same thing happened to us. The scenario was as follows:
We had test classes in the same package structure but in different source directories. Both the actual code and the test code was compiled into the same output directory (this is the default in Eclipse unless you specify otherwise, I think). Since JDepend doesn't analyse the source code but the compiled code, our test classes have accidentally introduced phantom dependencies between packages.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文