67

私のアプリケーションは Java EE で構築されています。

このアプリケーションには約 50 個の jar があります。

特定のキーワードで検索することはできますか (実際にはキーワードで検索したいのですがBEGIN REQUEST)?

4

10 に答える 10

142

Linux または OSX で zipgrep を使用できます。

zipgrep "BEGIN REQUEST" file.jar

多数の jar を検索する場合は、次のようにします。

find libdir -name "*.jar" -exec zipgrep "BEGIN REQUEST" '{}' \;

wherelibdirは、すべての jar を含むディレクトリです。このコマンドは、サブディレクトリも再帰的に検索します。

Windows の場合、cygwin をダウンロードして、その下に zipgrep をインストールできます: http://www.cygwin.com/

編集 1

式が見つかったファイルの名前を表示するには、次のことができます。

find libdir -name "*.jar" | xargs -I{} sh -c 'echo searching in "{}"; zipgrep "BEGIN REQUEST" {}'
于 2012-04-26T09:57:04.577 に答える
4

注意:これは正確な答えではありません。迅速なヒューリスティックなアプローチにすぎません。クラスの名前のようなもの (たとえば、どの jar にクラス Foo があるか?) またはメソッド名を見つける必要がある場合は、これが機能する可能性があります。

grep --text 'your string' your.jar

これにより、jar ファイルがテキストであるかのように検索されます。これはアーカイブを展開しないため高速ですが、精度が低いのもそのためです。網羅的である必要がある場合、これは使用すべきアプローチではありませんが、引き出す前に少し手早く何かを試したい場合、zipgrepこれは良いアプローチです。


からman grep

  -a, --text
          Process  a binary file as if it were text; this is equivalent
          to the --binary-files=text option.
于 2016-09-09T19:03:02.020 に答える
2

jar 内の検索や、特定のテキストを含むクラス名の検索は、WinRar 検索を使用すると非常に簡単です。その効率的で、少なくとも私にとっては常に機能しました。

WinRarで任意のjarファイルを開き、検索を開始したい場所からトップフォルダー(サブフォルダーを含む)に到達するまで「..」をクリックします。

以下のオプションを確認してください。

1.) 「検索するファイル名」、「アーカイブの種類」フィールドに「*」を指定します

2.) [サブフォルダを検索]、[ファイルを検索]、[アーカイブを検索] のチェック ボックスをオンにします。

于 2016-08-05T10:32:09.400 に答える
0

以下のコマンドは、結果をファイル名と jar ファイル名と共に表示します。

  1. jar ファイルのリストで文字列を検索します。

    find <%PATH of the Folder where you need to search%> -name "*.jar" -print -exec zipgrep "jar$|<%STRING THAT YOU NEED TO FIND>" '{}' \;
    
  2. jar ファイルのリストでクラス名を検索します。

    find . -name "*.jar" -print -exec jar tvf {} \; |grep -E "jar$|<%CLASS NAME THAT YOU NEED TO FIND>\.class"
    
于 2013-02-26T00:57:19.547 に答える
0

jfind jar の使用

JFind は、ファイルシステムのどこにでも Java クラスファイルを見つけることができます。たとえそれが zip 内の耳の中の jar の奥深くに隠されていてもです!

http://jfind.sourceforge.net/

于 2018-02-01T09:45:57.970 に答える