2012-02-13 6 views
0

Я пытаюсь использовать SOOT для генерации графов вызовов. Однако, когда я передаю ему некоторый класс для анализа, исключается исключение NoClassDefFoundError. Я использую следующие два учебника, чтобы иметь возможность выполнять некоторые из команд: http://www.brics.dk/SootGuide/sootsurvivorsguide.pdf и http://www.bodden.de/2008/08/21/soot-command-line/#obtaining.Исключение NoClassDefFoundError при попытке использовать SOOT

Я поместил исходный код 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 немедленно.

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

+0

Добавьте, пожалуйста, полное имя не найденного класса. – kornero

+0

Исключения в потоке «основной» java.lang.NoClassDefFoundError: MainFrame Вызванные: java.lang.ClassNotFoundException: MainFrame Im, предполагая, что ошибка генерируется из-за сами и не MainFrame, потому что это soot.Main генерации некоторых за ошибки. – ict1991

+0

Вы пытались использовать полные пути вместо относительного? – kornero

ответ

0

Первая строка classpath выглядит странно, и на самом деле вы не вызываете класс soot.Main. Дайте этому попытку:

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

Редактировать

Что касается вашего последнего комментария, это выглядит как типичная ошибка CLASSPATH.

Если выполнить вашей строки из приведенного выше вопроса, Java пытается запустить метод main в классе MainFrame (пакет по умолчанию) - и не может найти этот класс. С помощью моей (правильной!) Команды java пытается найти soot.Main.

Повторно проверьте свой путь к классу: вы должны указать правильные пути к библиотекам. Фактическая команда ожидает, что все три библиотеки плюс MainFrame.class находятся в текущем каталоге.

+0

Я пробовал эту форму ввода, и в этом случае это дало мне NoClassDefFoundError на саже/основной .... когда я использовал тот, который я опубликовал, мне даже удалось получить содержание справки и сведения о версии, поэтому я предполагаю, что это не то, что порождало проблему. – ict1991

+0

* что * класс не найден, 'soot.Main' или проанализированный класс? –

+0

Если я поместил вашу указанную команду в командной строке, генерируемая ошибка назовет класс сажи. Основной. Однако возникшая ошибка, когда я использую команду, о которой я сказал, будет сгенерирована ошибка, связанная с анализируемым классом ... так что в этом случае soot.Main не генерирует ошибку, я думаю – ict1991