Programming/Java
[펌글]j2sdk 최초 설치후 Exception in thread "main" java.lang.NoClassDefFoundError 에러가 난다면
choimosi
2009. 11. 23. 15:01
[java] j2sdk 최초 설치후 Exception in thread "main" java.lang.NoClassDefFoundError 에러가 난다면
written by fendee | 2009/02/23 22:23 | 분류: Java |
j2sdk 를 처음 설치한후, Exception in thread "main" java.lang.NoClassDefFoundError 에러가 난다면, 즉, 아래와 같이 C:\ 루트에 Java 라는 폴더를 만들고 그 안에서 작업을 실행하는데, 우선, 컴파일(javac) 은 에러가 나지 않는다. 그러나, 컴파일한 클래스파일을 실행(java)하면 이와같은 에러가 난다면, 우선, 세팅을 다시 찬찬히 살펴보자. 시스템변수인 Path 를 살펴보면, 새로 설치한 j2sdk 의 bin 폴더를 경로로 잡아두었다면, 잘 설정한 것이다. 에러를 유발한것은, Path 변수가 아니라, 바로 CLASSPATH 변수때문이다. 우선, 일반적으로 책이나 웹에 올려진 자료에 의해 아래와 같이 설정했다면, 바로 위와같은 Exception in thread "main" java.lang.NoClassDefFoundError 에러를 만나게 될 것이다. (NetBeans 나 이클립스로 작업한 경우에 대해서는 별도이며, 이 테스트는 단지 도스 커맨드 창에서 실행할때 발생하는 에러에 대한 조치사항이다.) 책이나, 웹에서 가르켜주는 일반적인 경로인 C:\j2sdk1.4.2_13\lib\tools.jar 로 CLASSPATH 를 지정하면 안된다. 여기서, 의미를 한번 되새겨 보자. CLASSPATH 라는 변수는 무엇을 의미할까? 명확히 뭐라 콕 찝어 설명할 순 없지만, 그 단어의 의미 자체를 보았을때는 class 파일의 경로라는 의미이다. 그럼, 뜬금없이 무슨 클래스 파일의 경로란 말인가. 다름 아니라, java 명령을 통해 클래스 파일을 실행시킬때를 말하는 그 클래스를 의미한다. Path 라는 시스템 변수를 bin 폴더로 지정해 놓았으니, 그 곳에 모여 있는 'javac.exe' 파일과 'java.exe' 실행파일을 아무곳에서나 호출할 수 있게 되었고, 따라서, 굳이 bin 폴더를 찾아가지 않고도, 바로 javac 와 java 명령을 쓰수는 있게 되었는데, javac 명령의 경우에는, 현재 그 명령을 호출한 폴더에 상관없이, 컴파일할 *.java 파일이 현재 명령을 실행한 폴더에 있으면 컴파일이 수행되지만, java 명령의 경우에는, 이와는 별개로, 시스템 변수로 등록된 경로에 실행하라고 입력한 클래스 파일이 없으면 에러가 나는 것이다. 즉, Exception in thread "main" java.lang.NoClassDefFoundError 에러는 클래스 파일을 찾지 못했다는 에러인 것이다. 따라서, 이 경로를 컴파일한 클래스 파일이 있는 경로로 맞춰 주어야 한다. 즉, 작업을 위해 별도로 만들어 놓은 폴더의 경로가 C:\Java 라는 폴더이며, 그 폴더에 컴파일된 test.class 파일이 있는데, 그 파일을 실행시키려 한다면, 시스템 변수인 CLASSPATH 를 C:\Java 로 지정해 줘야 하는 것이다. CLASSPATH 를 변경한 그림은 아래와 같다. 그러나, 꼭 이렇게 해야하는 것만은 아니다. 좀 귀찮긴 하지만, 클래스 파일이 있는 경로를 지정해 줄 수 있다. 만약, 현재 도스 커맨드가 실행중인 위치가 C:\test 라고 하자. 그럼, C:\Java 라는 폴더에 있는 클래스 파일이 아니라, D:\Source 라는 폴더에 클래스를 실행시키려 한다면, 아래와 같이 클래스 파일의 경로를 지정하여 실행할 수 있다. java -classpath D:\Source Hello 이는, D:\Source 폴더를 클래스 경로로 지정한후, Hello.class 파일을 실행시키는 것이다. 이 글과 관련있는 글을 자동검색한 결과입니다 [?]
|
# by | 2009/02/23 22:23 | Java | 트랙 |
http://fendee.egloos.com/7691351 여기서 퍼온글... 방명록을 남길려고 했으나 가입자가 아니면
아무것도 남기지 못 하네요 죄송