1

一般的なパッケージ依存関係の質問

P1のクラスとインターフェイスがP2を使用していない場合、どのような状況でパッケージP1とP2の間に依存サイクルが発生する可能性がありますか?つまり、「隠された依存関係」はどこから来るのでしょうか?

jdependを使用した具体例

jdependは、との間にパッケージの依存関係があると言っていますstsimulatorstsimulator.ststraversal、のクラスまたはインターフェイスは、のstsimulatorいずれかの部分を使用していstsimulator.ststraversalません。

  • jdependの依存関係-Eclipseのエクスプローラーはそう言っています、そして
  • stsimulatorstsimuator。*をインポートせず、文字列「ststraversal」を使用しないすべてのクラス/インターフェース。

どうしてそれができるのでしょうか?

jdependによって印刷されたパッケージ依存サイクルの一部

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

stsimulator
    |
    |   stsimulator.ststraversal
    |-> stsimulator


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

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

1 に答える 1

5

同じことが私たちにも起こりました。シナリオは次のとおりです。
同じパッケージ構造で、異なるソースディレクトリにテストクラスがありました。実際のコードとテストコードの両方が同じ出力ディレクトリにコンパイルされました(特に指定しない限り、これはEclipseのデフォルトです)。JDependはソースコードではなくコンパイルされたコードを分析するため、テストクラスが誤ってパッケージ間にファントム依存関係を導入しました。

于 2011-10-14T15:19:27.730 に答える