2

プロジェクトはさまざまなライブラリを使用していました。たとえば、、、a.jarなどb.jar一部c.jarの jarがリファクタリングされ、現在はandd.jarなどです。 必要なのは、インストール内のどのjarが廃止され、削除できるかを自動的に検出する方法です。 これは可能ですか?
ab.jarcd.jar

4

2 に答える 2

2

したがって、LooseJarを使用すると、次を追加することで未使用のJarファイルを検出できます。

-javaagent:loosejar.jar

コマンドラインから(またはEclipseのVMオプションとして)呼び出すときにJavaコマンドに追加します。LooseJarがクラスとそのためのjarが必要であることを認識するために、実行時にクラスを動的にロードするコード行を呼び出す必要があるため、これは技術的に自動ではないと思います。良い方法は、このJavaエージェントを使用して単体テストを呼び出すことです(単体テストのコードカバレッジが良好であると想定しています)

于 2012-08-28T09:19:56.537 に答える
2

最良の方法は、Mavenを使用することです。依存関係がMavenで定義されている場合は、実行mvn dependency:treeして必要な情報を取得できます。詳細については、この記事を参照してください。

Mavenを使用しない場合は、おそらくjdependなどのツールを使用する必要があります。ただし、注意してください。このようなツールは、実際にはすべての依存関係を取得できるわけではありません。静的分析のみを使用して、リフレクションによって呼び出されている動的にロードされたクラスまたはAPIへの依存関係を取得することはできません。完全なソリューションは、アプリケーションを実行し、考えられるすべてのシナリオでテストし、クラスローダーによってロードされるクラスを確認する場合にのみ達成できます。100%のテストカバレッジがある場合は、オプション-verbose:classを使用してアプリケーションを実行してから、アプリケーションに対してすべての単体テストを実行できます。ロードされたすべてのクラスのリストが表示されます。次に、このリストをファイルに配置し、クラスリストを分析してjarリストに変換するシェルスクリプトを記述します。

于 2012-08-28T09:26:44.223 に答える