我正在尝试使用SOOT生成调用图。然而,当我传递给它一些要分析的类时,会抛出异常NoClassDefFoundError。我使用以下两个教程来执行一些命令:http://www.brics.dk/SootGuide/sootsurvivorsguide.pdf和http://www.bodden.de/2008/08/21/soot-command-line/#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,也会生成同样的错误。
有人知道为什么会抛出这种异常吗?
第一个类路径字符串看起来很奇怪,实际上您没有调用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
。
再次仔细检查类路径:您必须提供正确的库路径。实际的命令期望所有三个库加上MainFrame.class
都在当前目录中。