Java クラスのセットを指し示すことができ、各クラスの推移的なインポートを示す出力を生成する何らかのツールはありますか?
インポートは言語自体の観点からは「推移的」ではないことを理解しています。つまり、com.acme.X が com.acme.Y をインポートし、com.acme.Y が com.acme.Z をインポートする場合、それは意味しません。 com.acme.X 内で com.acme.Z を参照できること。しかし、それは私が言いたいことではありません:
むしろ、com.acme.X は依然として com.acme.Z に依存していることを意味し (少なくとも X と Y の現在の実装では)、その事実を知りたいのです。実際、私は多数のクラスについてそれを知りたいので、それを自動的に決定するツールがあることを望んでいます。
スタンドアロン ツールまたは Eclipse プラグインまたは機能のいずれかが優れています。
前もって感謝します。
編集して、これが何のために欲しいかを示してください:
(本質的に) 完全に無関係な多くの機能を含む巨大なモノリシック jar があります。私はそれをいくつかのより小さく、より管理しやすく、より自己一貫性のある jar に分割したいと思います。
残念ながら、パッケージに基づいて単純に分割することはできません。パッケージ自体の多くも自己一貫性がないためです。つまり、たとえば「com.acme.utils」パッケージがあります。そのパッケージに含まれる 2 つのものは、どちらもある意味で「ユーティリティ」であるという事実を除いて、おそらく共通点はありません。1 つは特定のビジネス機能のユーティリティ、もう 1 つは TCP/IP ユーティリティ、もう 1 つは一連の文字列ユーティリティ、もう 1 つはまったく関係のないビジネス機能です。
そして、このようなパッケージがたくさんあります。したがって、パッケージの観点からインポートの推移性を見ると、インポートは際限なく雪だるま式に増えていき、モノリシック jar 内のすべてのものが多かれ少なかれモノリシック jar 内の他のすべてに依存しています。
そこで、パッケージの観点ではなく、クラスの観点からインポートの推移性を検討することから始めたいと思います。そうすれば、既存のパッケージから新しいより一貫性のあるパッケージに再編成する必要があるクラスをより簡単に判断できるようになり、その後、パッケージ/パッケージのセットごとにモノリシック jar を分割できます。