最新のものを使用していましたが、古いバージョンのクラスが使用されています。アプリケーションサーバーのすべてのサブフォルダにあるすべてのJARファイルをスキャンするには、この特定のクラスが見つかったJARSファイルのファイル名を出力する小さなシェルスクリプトを作成するにはどうすればよいですか?JarScanは、特定のクラスのすべてのサブフォルダ内のすべてのJARファイルをスキャンします
答えて
何かのように:
find . -name '*.jar' | while read jarfile; do if jar tf "$jarfile" | grep org/jboss/Main; then echo "$jarfile"; fi; done
あなたはこのようにそれを包むことができます。
jarscan() {
pattern=$(echo $1 | tr . /)
find . -name '*.jar' | while read jarfile; do if jar tf "$jarfile" | grep "$pattern"; then echo "$jarfile"; fi; done
}
をそしてjarscan org.jboss.Main
カレントディレクトリの下にあるすべてのJARファイルにそのクラスを検索します
ここでこの質問に答えるには、私たちのために単純なシェルコマンドを使用します。
for jarFile in $(
ls -R |
awk '
match($0, ".*:") {
folder=$0
}
! match($0, ".*:") {
print folder$0
}' |
grep "\.jar" |
sed -e "s/:/\//g"
);
do
unzip -l $jarFile;
done |
awk '
match($0, "Archive.*") {
jar=$0
}
! match($0, "Archive.*") {
print jar" : "$0
}' |
grep org.jboss.Main
結果が必要な場合は、agentransack http://www.mythicsoft.com/agentransack/をインストールして、テキスト検索を行うことができます。 Agentransackは、jarファイルとzipファイルも検索します。
年前私はこのような問題を解決するためにユーティリティclassfindを書きました。 .jarセットを指すようにクラスパスを設定すると、classfindは特定のクラスを見つけることができるjarを教えてくれます。
example% classfind -c Document
/usr/java/j2sdk1.4.0/jre/lib/rt.jar -> org.w3c.dom.Document
/usr/java/j2sdk1.4.0/jre/lib/rt.jar -> javax.swing.text.Document
は直接あなたの質問に答えていないが、多分これはあなたの問題を解決します:あなたは、特定のクラスがあなたのコードに簡単な行を追加することによってロードされた場所(例えばjarファイル)をプリントアウトすることができます
System.err.println(YourClass.class.getProtectionDomain().getCodeSource());
次に、どこから来たのかがわかります。
ツールは非常に便利です。
2つのパネルでGUIウィンドウを開きます。ディレクトリを選択すると、そのディレクトリ内のすべてのJARファイルがスキャンされ、特定のクラスを検索できます。下のパネルがスキャンされたすべてのJARファイル内のそのクラスのヒットのリストで点灯します。
このツールの新しいURL:https://github.com/javalite/jar-explorer – ipolevoy
#! /bin/sh
path=$1
segment=$2
if [ -z "$path" ] || [ -z "$segment" ]
then
echo "Usage: $0 <path> <segment>"
exit
fi
for jar in $path/*.jar ; do echo " *** $jar *** " ; jar tf $jar| grep --color=always $segment; done;
- 1. Pythonは、ディレクトリ内のすべてのファイルを表示します(サブフォルダ内のすべてのファイルを含む)
- 2. Gitはすべてのサブフォルダ内のサブフォルダを無視します
- 3. DynamoDB内の特定のハッシュのすべてのソートキーをスキャンします。
- 4. サブフォルダ内のすべてのファイルをサブフォルダ名が
- 5. すべてのサブフォルダ内のすべてのzipファイルを解凍する
- 6. 親フォルダ内の特定の拡張子を除くすべてのサブフォルダとファイルを削除します
- 7. シェルスクリプトまたはAppleScriptを使用してサブフォルダ内の特定のファイルタイプのすべてのファイルをサブフォルダごとに1つのファイルに圧縮
- 8. サブフォルダ内のすべてのファイルを開く
- 9. ループ内のすべてのサブフォルダの名前を変更して
- 10. MavenはJAR内のすべての.classファイルを複製します
- 11. Outlookは特定のフォルダをスキャンし、電子メールからすべての添付ファイルを保存します
- 12. 特定のサブフォルダ内のファイルを別のサブフォルダに移動する
- 13. リストもすべてのフォルダ内のファイルやサブフォルダ
- 14. Javascript/Jqueryテキストドキュメント内のすべての行を特定します
- 15. RewriteRule:ルート、ファイル、特定のフォルダ内のすべてのファイル以外のすべてを拒否する
- 16. すべてのサブフォルダ内の特定のフォルダのみを削除して作成する方法
- 17. サブフォルダへのすべてのリクエストをサブフォルダ内のindex.phpに書き換えます。
- 18. フォルダとすべてのサブフォルダ内のすべてのワードファイルに対してタスクを実行します。
- 19. テーブル内の特定のクラスをすべて削除してください
- 20. すべて特定のサフィックスを持つディレクトリ内のすべてのファイルの内容
- 21. すべてのJavaバージョンのJarファイル?
- 22. フォルダとすべてのサブフォルダ(圧縮フォルダ)のすべてのファイルを削除
- 23. スキャンすべてのWiFiデバイス
- 24. 特定のフォルダ内のすべてのすべてのファイルにfoldernameを添付する
- 25. Jekyllはサブフォルダなしの_siteにすべてのファイルを作成します
- 26. フォルダ内のすべてのサブフォルダのファイルリストを作成するbash
- 27. iphone内のフォルダのすべてのサブフォルダを反復する
- 28. 特定のクラスのすべての段落をエコーする
- 29. PHPはすべてのサブフォルダの画像をエコーします
- 30. フォルダ、すべてのサブフォルダ、およびすべてのファイルのアクセス許可を変更します。
'jar'の代わりに 'unzip -l'を使用すると非常に高速に動作します。 'unzip -l'を実行すると 'jar'が72秒かかり4秒かかりました –
私はここでこれを正確に言うために来ました。 +1 –
特定のクラスがどのjarで見つかるか知りたいのであれば、私は通常cd〜/ .m2/repositoryのような処理を行います。 grep -r -H "classname" *。 – extraneon