【问题标题】:NoClassDefFoundError exception when trying to use SOOT尝试使用 SOOT 时出现 NoClassDefFoundError 异常
【发布时间】:2012-02-13 09:55:31
【问题描述】:

我正在尝试使用 SOOT 生成调用图。但是,当我将某个要分析的类传递给它时,会抛出异常 NoClassDefFoundError 。我正在使用以下两个教程来执行一些命令: http://www.brics.dk/SootGuide/sootsurvivorsguide.pdfhttp://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,也会产生相同的错误。

有谁知道为什么会抛出这种异常?

【问题讨论】:

  • 请添加未找到班级的全名。
  • 线程“main”中的异常 java.lang.NoCLassDefFOundError: MainFrame 原因:java.lang.ClassNotFoundException: MainFrame 我假设错误是由于 MainFrame 本身而不是因为煤烟而产生的。 Main 正在生成一些错误。
  • 您是否尝试使用完整路径而不是相对路径?
  • 我做了并且正在生成同样的错误

标签: java noclassdeffounderror call-graph soot


【解决方案1】:

第一个类路径字符串看起来很奇怪,实际上您没有调用 soot.Main 类。试试这个:

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

编辑

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

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

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

【讨论】:

  • 我已经尝试过这种形式的输入,在这种情况下,它在 soot/Main 上给了我一个 NoClassDefFoundError .... 当我使用我发布的那个时,我什至设法获得了帮助内容和版本详细信息,所以我猜这不是产生问题的原因
  • 什么类未找到,soot.Main 还是分析的类?
  • 如果我将您指定的命令放在命令行中,生成的错误将命名为 soot.Main 类。然而,当我使用我所说的命令时产生的错误,将产生一个关于分析类的错误......所以在这种情况下,我认为 soot.Main 不会产生一个错误
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-19
  • 1970-01-01
  • 2012-09-10
  • 2017-08-13
  • 2021-10-03
  • 2022-01-25
  • 1970-01-01
相关资源
最近更新 更多