2012-02-02 5 views
4

JARファイルを開けて特定の.classファイルを見つけるコマンドラインツールはありますか?私のような特定のクラスを持っていたジャー(S)の検索にディレクトリツリーを歩いてみようと何か...特定のクラスがどのJARにあるのかを教えるためのコマンドラインツールはありますか

find . -name *jar -exec jaregrep -l "org.bob.PriceListViewUpdate" {} \; 
REST/prices.jar 
v2/REST/prices.jar 

このような何かが存在している必要があります。どこで入手できますか?

+0

これはあなたの質問に直接答えません。ごめんなさい。直接、私はそれを行う方法を知らない。しかし、Apache Mavenを見てみるとよいでしょう。このような理由から彼らのレポ構造はあなたに魅力的かもしれません。乾杯! –

+0

@CodySは考えてくれてありがとうございますが、問題は依存性の問題ではなく、 "このクラスは297 JARSのどこかにありますが、既存のコードベースではどちらか"です。 –

+1

Jarscanを見てください。http://www.inetfeedback.com/jarscan/ –

答えて

6

jarがどのディレクトリにあるか知っていれば、grepをlinuxで使用できます。疑わしいjarファイルの上のディレクトリからこのコマンドを実行します。どのJARファイル(または複数のファイル)にそれがあるかがわかります。私はJBossが使用するジャンパーの混乱の中で何かを探している時はいつもこれを行います。

grep -rail --include=*.jar org.bob.PriceListViewUpdate 
+0

これは「古い学校」ですが、完了しました。ありがとう。 –

+0

美しい、ありがとう – MMacphail

1

JWhichは、あなたが探しているリソースを含むjarファイルを見つけるために、コマンドラインツールを提供します。

1

は、私が使用して、この1:

#!/bin/sh 

find $1 -name *jar | while read JARFILE 
do 
    COUNT=$(unzip -qq -l "$JARFILE" "$2" | wc -l) 
    if [ $COUNT -gt 0 ] ; then 
      echo "$JARFILE: $COUNT matches" 
    fi 
done 

すなわち:

./findclass.sh workspace-indigo/ org/objectweb/* 

あなたは、パッケージ名のグロブを使用することができますが、あなたの代わりにbackdrawとしてfullstopsのスラッシュでパッケージ名を指定する必要があります。

0

このリストにTattleTaleを追加します。これは、jarのリストの詳細なHTMLレポートを生成するためのツールです。

通常、バージョンの競合をデバッグするのに便利です。

関連する問題