01.JAVA/Java2009. 6. 21. 03:27
반응형

Exception in thread 'main' java.lang.NoClassDefFoundError

도스창이나, eclipse 등등 자바 실행시 이런 문구가 떠서

당황해본 경험이 있다. OTL...

이런 메세지가 뜨는 것에는 2가지 이유가 있다.

자바실행시, 파일명을 잘못 입력했던가

아니면, classpath 를 잘못 지정했기 때문이다.


1. 자바실행시 잘못된 파일명 입력

예를 들어, 도스창에서 자바파일을 컴파일하고, (javac Hello.java)

실행을 시킬 때, (파일명 : Hello.java , Hello.class)

java Hello.java                 <- 이렇게 하면 당연히 위에 메시지가 뜬다 ㅡㅡ;;...

java hello.java                 <- 이렇게해도 당연히 뜬다 ㅡㅡ....

java Hello                        <- 이렇게 해야한다!! ^^


java 실행시 대소문자를 구분하고, 컴파일된 것을 실행시키는 것이기 때문에,

*.java를 실행시키려는 무모한 도전은 자제를 부탁한다.


<여기서 잠깐!! 자바프로그램 실행의 기본적인 개념>

 

※ 컴파일(compile)이 뭐죠?

 

- 컴파일(compile)이란 사람이 알아 볼수있게 만든 프로그램소스를 기계가 알아 볼수있게

  만들어주는 작업입니다. 사람은 십진수를 쓰고, 영어를 사용하지만, 컴퓨터는 2진수에

  영어도 쓸줄 모르잖아요. ^^ 그래서, 컴퓨터가 쉽게 이해할수 있게 컴파일을 하는 것입니다.

  결국 프로그램을 실행시켜주는 것은 사람이 아니라, 컴퓨터니까요.

 

※ java파일과 class파일의 차이가 뭐죠?

 

- 자바를 실행시킬 때, 컴파일을 합니다. 그러면, *.java파일이 컴파일되어서 *.class파일이

  생겨납니다. 컴퓨터가 처리할수 있는 파일은 *.class파일이기 때문에 자바에서 실행시

  명령어를 [java 파일명] 으로 쓰는 것입니다. 확장자 java를 붙이면 안되는 거죠. ^^

  결국, java파일은 사람이 만들고 쓰는 것이고, class파일은 컴퓨터가 만들고 처리하는

  것이죠.


2. classpath지정이 잘못 되어있을 경우
 보통 jdk1.5이상의 버전을 설치하면, 자동으로 환경변수를 설정해주기 때문에,
 문제가 발생하지 않아야하는데, 종종 이러한 문제가 발생한다 ㅡㅡ...
 이유는 나도 모른다. ㅠ_ㅠ...
 어쨌든!!
 이것을 해결하는 방법은
 "내컴퓨터에서 마우스 오른쪽키 " -> "속성" -> "고급 탭" - > "환경변수"
 에 들어가서,
 아래쪽 부분에 있는 "CLASSPATH" 부분을 '편집"을 통해 수정해줘야 한다는 것이다.
 jdk가 설치된 디렉토리의 경로를 적어주는데, 조심해야  할 점이 있다.
 .;C:\Program Files\Java\jdk1.6.0_01\bin;
 이렇게 제일 앞부분에 .; <- 이게 꼭 들어가야한다는 것이다.
 (. 은 보통 현재 위치를 가리키는 표시)

 
이 그림 처럼 해주면 된다.
 
그러면 문제없이 잘 실행된다. ^^


Exception in thread "main" java.lang.NoClassDefFoundError:xxxxx


대략 이런식으로 에러 뜰떄는 클래스를 못찾는거다

CLASSPATH=.;    <=이걸 추가시켜줘야 한다
( 현재폴더를 classpath에 추가하는걸 의미한다)
Posted by 1010