Исключение NoClassDefFoundError при попытке использовать SOOT - PullRequest
0 голосов
/ 13 февраля 2012

Я пытаюсь использовать 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.

Кто-нибудь знает, почему выбрасывается такое исключение?

1 Ответ

0 голосов
/ 13 февраля 2012

Первая строка classpath выглядит странно, и вы фактически не вызываете класс 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 находятся в текущем каталоге.

...