1

我正在尝试使用 SOOT 生成调用图。但是,当我将某个要分析的类传递给它时,会抛出异常 NoClassDefFoundError 。我正在使用以下两个教程来执行一些命令: http ://www.brics.dk/SootGuide/sootsurvivorsguide.pdf和http://www.bodden.de/2008/08/21/煤烟命令行/#obtaining

我已将要分析的 java 源代码放在 SOOT 的同一类路径中。所以当我即将执行时,我使用了“。” 指定当前目录。以下是我正在执行的命令:

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

编辑

关于您的最后一条评论,它看起来像一个典型的类路径错误。

如果您从上面的问题执行您的行,Java 会尝试main在类MainFrame(默认包)中启动该方法 - 并且找不到该类。使用我的(正确的!)命令,java 尝试查找soot.Main.

再次仔细检查您的类路径:您必须提供正确的库路径。实际的命令期望所有三个库MainFrame.class都在当前目录中。

于 2012-02-13T10:16:46.673 回答