6

合計 83 個の JAR のうち、実際に 12 個の Java EE/Spring プロジェクトのグループで使用されている JAR ライブラリを特定しようとしています。すべての JAR は 1 つの EAR の下にあります。開発はEclipseで行い、ビルドツールはAntです。すべてのプロジェクトは、WebSphere Application Server 6.0 上で実行されます。

この質問:使用済みの JAR を調べるには?

これを指します:どのjarファイルがJavaプログラムで使用されているかを分析する方法は?

java引数を使用して実行可能ファイルを呼び出すことをお勧めし-verbose:classますが、これがここで役立つ場合、プロジェクトがローカルの WAS 6.0 で実行されている場合はどうすればよいでしょうか?

この質問は、より正しい方向を指しているようです:どのjarがどの順序でクラスローダーによってロードされているかを見つける方法は?

ただし、クラスローダーがどのように機能するか、クラスローダーインスタンスが何であるかを知る方法(返信は、URLClassLoaderにjar/ディレクトリのリストへのアクセスを提供するgetURLs()メソッドがあることを示しています)、およびクラスローダーインスタンスがは URLClassLoader ではありません。そこからどこに行くのですか?

4

4 に答える 4

4

詳細なクラスの読み込みをオンにします (ディムで提案されているように)

管理コンソールを見ると、必要な情報を表示するクラス ローダー ビューアが表示されます。

クラスローダーには、クラスをロードするために使用する標準の階層があります。

これを見てください: http://www-01.ibm.com/support/docview.wss?uid=swg27023549&aid=1

このプレゼンテーションは、WebSphere 環境で物事がどのように機能するかを紹介する非常に優れたものです。

HTH

マングル

于 2012-04-21T02:02:28.833 に答える
2

WebSphere 6.1 では、「-verbose:dynload」オプションを使用できます ( WebSphere Application Server V6.1: Classloader Problem Determination Redbookの 52 ページを参照)。出力は native_stderr.log に表示されます

于 2012-04-20T17:00:32.850 に答える
1

http://www.jboss.org/tattletaleのようなものを試してみてください。これにより、使用されていない jar がわかります。

于 2012-04-20T13:55:50.377 に答える
1

この質問に対する一般的な答えは難しいかもしれません。Java はクラスを動的にロードするため、プログラムのすべての機能が実行されない限り、いくつかの jar/クラスがロードされない場合があります (簡単な例として Class.forName("foo") を考えてください)。したがって、どのような種類の静的依存関係分析でも 100% の完全な全体像が示されるわけではありません。実行中のアプリケーションを分析し、できればすべてのコード ブランチにヒットする必要がある場合があります。

大まかな最初の概算として、まったく開かれていない jar があるかどうかを確認するには、アプリケーションの実行時に OS (Unix では「lsof」) によって報告されるように、webSphere プロセスの開いているファイルのリストを調べてみてください。 . jar が開いているとしてリストされていない場合は、それがロード/使用されていないことを示していますが、Websphere が注釈などのために jar をスキャンできるため、必ずしも true を逆にする必要はありません。

于 2012-04-20T14:03:13.067 に答える