1

SOOT を使用してコール グラフを生成しようとしています。ただし、分析するクラスを渡すと、例外 NoClassDefFoundError がスローされます。コマンドの一部を実行できるようにするために、次の 2 つのチュートリアルを使用して います。 soot-command-line/#obtaining .

SOOT の同じクラスパスに解析対象の Java ソース コードを配置しました。だから私が実行しようとしているとき、私は「。」を使用しました。現在のディレクトリを指定します。以下は私が実行しているコマンドです:

java -cp jasminclasses-2.5.0.jar:sootclasses-2.5.0.jar:plyglot-1.3.5.jar:.soot.Main -cp . MainFrame

-cp を省略して MainFrame をすぐに呼び出しても、同じエラーが生成されます。

この種の例外がスローされる理由を誰かが知っていますか?

4

1 に答える 1

0

最初のクラスパス文字列は奇妙に見え、実際にはsoot.Mainクラスを呼び出していません。これを試してください:

java -cp jasminclasses-2.5.0.jar:sootclasses-2.5.0.jar:plyglot-1.3.5.jar soot.Main -cp . MainFrame

編集

最後のコメントに関しては、典型的なクラスパス エラーのようです。

上記の質問の行を実行するmain、Java はクラス (デフォルト パッケージ) でメソッドを開始しようとしMainFrameますが、そのクラスが見つかりません。私の (正しい!) コマンドで、Java は を見つけようとしますsoot.Main

クラスパスを再度確認してください。ライブラリへの正しいパスを指定する必要があります。MainFrame.class実際のコマンドは、3 つのライブラリとすべてが現在のディレクトリにあることを想定しています。

于 2012-02-13T10:16:46.673 に答える