2012-02-13 4 views
0

호출 그래프를 생성하는 데 SOOT를 사용하려고합니다. 그러나 분석 할 클래스를 전달하면 예외 NoClassDefFoundError가 발생합니다. 몇 가지 명령을 실행할 수 있으려면 다음 두 자습서를 사용하고 있습니다. http://www.brics.dk/SootGuide/sootsurvivorsguide.pdfhttp://www.bodden.de/2008/08/21/soot-command-line/#obtaining.SOOT를 사용하려고 할 때 NoClassDefFoundError 예외

나는 분석 할 자바 소스 코드를 SOOT의 동일한 클래스 경로에 넣었다. 그래서 내가 실행하려고 할 때, 나는 "." 현재 디렉토리를 지정합니다. 다음은 내가 실행하고있어 명령입니다

나는 -cp을 생략하고 바로 바로 메인 프레임을 호출 할 경우에도 같은 오류가 생성되는
java -cp jasminclasses-2.5.0.jar:sootclasses-2.5.0.jar:plyglot-1.3.5.jar:.soot.Main -cp . MainFrame 

.

아무도 왜 이런 종류의 예외가 발생하는지 알고 있습니까?

+0

찾을 수없는 클래스의 전체 이름을 입력하십시오. 글 – kornero

+0

예외는 "메인"java.lang.NoClassDefFoundError가 : java.lang.ClassNotFoundException가 : 메인 프레임 에 의한 메인 프레임 임은 soot.Main 일부를 발생하기 때문에 에러 때문에 메인 프레임 자체의 아니라 생성되는 것으로 가정 for of error. – ict1991

+0

상대 경로의 전체 경로를 사용하려고 했습니까? – kornero

답변

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을 찾습니다.

클래스 경로를 다시 한 번 확인하십시오. 올바른 경로를 라이브러리에 제공해야합니다. 실제 명령에서는 세 라이브러리에 MainFrame.class을 더한 것이 현재 디렉토리에 있다고 가정합니다.

+0

나는이 입력 양식을 시도하고이 경우 나에게 매연/메인에 NoClassDefFoundError를 부여했습니다 ... 내가 게시 한 것을 사용했을 때 나는 도움말 내용 및 버전 정보가 포함되어 있으므로 문제가 발생하지 않은 것 같습니다. – ict1991

+0

* what * 클래스가 발견되지 않았습니다. 'soot.Main' 또는 분석 된 클래스입니까? –

+0

내가 지정한 명령을 명령 줄에 배치하면 생성 된 오류의 이름이 soot.Main 클래스가됩니다. 그러나 내가 언급 한 명령을 사용할 때 생성 된 오류는 분석 된 클래스에 관한 오류가 생성됩니다 ...이 경우 soot.Main이 생성 된 오류가 아닙니다. – ict1991