3

stringsjarファイル用のUnixコマンドに相当するものはありますか?

例を挙げると、このJavaファイルがある場合:

public class Foo {
    String foo = "I\'m so meta even this acronym";
}

コンパイルされ、bar.jarに配置されます

理想的には、bar.jarでコマンドを実行して、文字列「I'm so meta」を標準出力に送信し、grepできるようにします。

私が解決しようとしている問題は、Javaプログラムでエラーメッセージが表示されることです。どのjarファイルからのものか知りたいです。

4

4 に答える 4

5

これはあなたのために働くはずです:
unzip -p your.jar |strings| grep 'your string'

ディレクトリ内の複数のJARファイルを検索するには、次を使用します。
unzip -p \*.jar |strings| grep 'your string'

于 2011-07-28T13:41:47.230 に答える
2

瓶は単なるzipファイルなので、出発点として適しています。

unzip -p myfile.jar | grep "Error message"

動作しているように見えますが、解凍すると制御文字が印刷される可能性があるため、現在のコンソールが台無しになる可能性があります。実際にファイルをディレクトリに解凍し、そのディレクトリで文字列を実行することをお勧めします。おそらくこのようなものがうまくいくでしょう

for file in `ls *.jar`
do
  echo $file
  unzip -ol $file | awk '{ print $4 }' > extracted && cat extracted | xargs strings | grep "ERROR MESSAGE" && cat extracted | xargs rm -rf
done

それを行うにはもっと効率的な方法があるに違いありません。シェルスクリプトの第一人者がこれをクリーンアップしてくれると確信しています。

于 2011-07-28T13:38:22.853 に答える
0

エラーメッセージが例外としてスローされた場合は、スタックトレースを調べて、例外をスローするクラスとメソッドを取得することをお勧めします。次に、jad(java decompiler)を使用してクラスを逆コンパイルし、メッセージの送信元を確認します。

于 2011-07-28T13:46:26.663 に答える
-2

Unixで「nohup」コマンドを試すことができます。ここでは、すべての例外と標準出力がファイルに追加されます

コマンドは

nohup java -jar bar.jar > bar.out &

jar実行のエラーメッセージについては、ファイルbar.outを参照してください。

于 2011-07-28T13:38:31.327 に答える