web-dev-qa-db-ja.com

Jarファイル間の依存関係を確認する方法は?

私は最近、JSFで書かれたWebシステムのサポートとプログラミングを行いました。コードはやや乱雑で冗長であり、はい、ドキュメントは存在しません。

システムには40を超えるjarライブラリがあり、それらのほとんどは古いバージョンとテストのために冗長です。 1つのjarを削除するには、コードにインポートされていないことを確認する必要があるため、コードでjarインポートパス(IntelliJ IDEを使用)を検索し、使用されていないことを確認して削除しました。

ただし、コードをコンパイルした後、テスト中にいくつかの実行時エラーが発生しました。他の既存のjarファイルで使用されているjarファイルをいくつか削除したことがわかりました。

問題は、jarを削除する前に、別のjar/Javaクラスで使用されていないことを確認するにはどうすればよいですか?

Jarにはコンパイル済みクラスがありますが、コンパイル済みクラスdoには必要なライブラリのインポートパスがあります。しかし、IntelliJでそれらを検索することはできません(jarファイル内を検索しません)。

私が今している唯一の方法は、jarファイルを削除するたびにシステムをテストし、クラッシュできるかどうかを確認することです。テストする機能の数が非常に多いため、これは完全に簡単な方法ではありません。

多数のJava files/jarsを送信でき、それらの間の依存関係を表示できるツールがあることを望みます。

28
Saleh Al-Zaid

JBossTattleTaleと呼ばれるJBossプロジェクトから出てきたツールがあったことを私は知っています。一見の価値があるかもしれません:

http://www.jboss.org/tattletale

21
Uri

JDepend は、任意の数のJAR、クラスファイルなどの依存関係を分析します。レポートするパッケージをそれらのJARに関連付けることは、簡単な追加手順です。

6
Nick Veys

プロジェクトにMavenを使用してみませんか?これは、依存関係の管理に大いに役立ちます。

1
silmx

JarAnalyzer も見つかりましたが、もうメンテナンスされていないようです。

1
giraff

さて、今は2013年なので、このツールが2009年に優れていたかどうかはわかりません。使用しただけで便利であることがわかりました:Class Dependency Analyzer(CDA)(V1.14) http://www.dependency-analyzer.org/ このツールにはグラフUI(Swing?)があります。 libjarとJavaクラスを追加すると、Class/Package/Container(jar)レベルで依存関係が表示されます。依存関係も表示されるため、依存関係を簡単に見つけることができます。 jarファイルと依存jarファイルに。

1
Anderson Mao