2012-02-13 5 views
0

私はコールグラフを生成するためにSOOTを使用しようとしています。しかし、解析するクラスを渡すと、NoClassDefFoundError例外がスローされます。いくつかのコマンドを実行するには、次の2つのチュートリアルを使用しています: http://www.brics.dk/SootGuide/sootsurvivorsguide.pdfおよびhttp://www.bodden.de/2008/08/21/soot-command-line/#obtainingNoClassDefFoundError例外がSOOTを使用しようとしています

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

私は-cpを残し、ちょうどすぐにメインフレームを呼び出しても、同じエラーが生成されている
java -cp jasminclasses-2.5.0.jar:sootclasses-2.5.0.jar:plyglot-1.3.5.jar:.soot.Main -cp . MainFrame 

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

+0

見つからないクラスのフルネームを追加してください。スレッドで – kornero

+0

例外「メイン」JAVA.LANG.NOCLASSDEFFOUNDERROR:soot.Mainいくつかを生成しているため、エラーが原因メインフレーム自体によって生成されていないされていると仮定すると、メインフレーム イム:れるjava.lang.ClassNotFoundException:起因するメインフレーム 〜のためのエラー。 – ict1991

+0

相対パスの完全パスを使用しようとしましたか? – kornero

答えて

0

最初のクラスパス文字列が奇妙に見え、実際にはsoot.Mainクラスを呼び出さない。この試みを与える:あなたの最後のコメントについて

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

編集

、それは典型的なクラスパス・エラーのように見えます。

あなたは上記の質問からあなたラインを実行すると、JavaはクラスMainFrame(デフォルトパッケージ)にmainメソッドを起動しよう - と、そのクラスを見つけることができません。私の(正しい!)コマンドで、javaはsoot.Mainを見つけようとします。

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

+0

私はこの形式の入力を試しましたが、このケースでは私にNoClassDefFoundErrorを与えています。ヘルプの内容とバージョンの詳細がわかりましたので、それは問題を生成しているものではないと推測しています – ict1991

+0

* what *クラスが見つからないか、 'soot.Main'か解析されたクラスですか? –

+0

指定したコマンドをコマンドラインに置くと、生成されたエラーはsoot.Mainクラスの名前になります。しかし、私が述べたコマンドを使用するとエラーが発生し、解析されたクラスに関するエラーが生成されます...この場合、soot.Mainは生成されません – ict1991

関連する問題