2012-02-13 94 views
0

当我试图用烟灰产生调用图。但是,当我传递一些要分析的类时,抛出异常NoClassDefFoundError。我使用的是以下两个教程能够执行一些命令: http://www.brics.dk/SootGuide/sootsurvivorsguide.pdfhttp://www.bodden.de/2008/08/21/soot-command-line/#obtainingNoClassDefFoundError的例外尝试使用SOOT

我已经把Java源代码在烟灰的相同类路径进行分析。所以当我即将执行时,我使用了“。”指定当前目录。以下是我执行命令:

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

即使我离开了-cp,只是立即拨打大型机产生同样的错误。

没有人知道为什么这种异常被抛出?

+0

请添加找不到的类的全名。 – kornero 2012-02-13 10:11:15

+0

线程“main”中的异常java.lang.NoCLassDefFOundError:MainFrame 引起:java.lang.ClassNotFoundException:MainFrame 我假设错误是由于MainFrame本身而产生的,而不是因为soot.Main产生了一些因为错误。 – ict1991 2012-02-13 10:18:03

+0

您是否尝试使用相对的完整路径intead? – kornero 2012-02-13 10:25:01

回答

0

第一类路径字符串看起来奇怪,你居然不调用soot.Main类。试试这个:

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

编辑

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

如果执行从上面的问题行,爪哇试图启动类MainFrame(默认包)的main方法 - 并不能找到这个类。用我的(正确的!)命令,java试图找到soot.Main

再次仔细检查你的classpath:你必须提供给图书馆正确的路径。实际的命令期望,所有三个库加上MainFrame.class都在当前目录中。

+0

我试过这种形式的输入,在这种情况下,它给了我一个NoClassDefFoundError的烟灰/主....当我使用我发布的一个我甚至设法得到帮助内容和版本的详细信息,所以我猜这不是什么一直在产生的问题 – ict1991 2012-02-13 10:22:57

+0

*什么*类未找到,'soot.Main'或分析的类? – 2012-02-13 10:37:06

+0

如果我在命令行中放置指定的命令,则生成的错误将命名为soot.Main类。然而,当我使用我所说的命令时,会产生一个关于被分析的类的错误......所以在这种情况下,soot.Main并不会产生一个我认为是错误的错误 – ict1991 2012-02-13 10:43:52