개발 등/JAVA

Exception in thread "main" java.lang.NoClassDefFoundError: (이클립스에서 생성한 JAVA 파일 콘솔에서 호출할 때 에러 발생)

darkhorizon 2013. 8. 6. 11:38
728x90
반응형

이클립스에서 생성한 자바파일을 콘솔에서 호출할 때 

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

호출할 클래스파일명이나 메인메서드가 정확하다는 가정하에서 이런 예외가 발생하면 classpath의 문제일 경우가 대부분이다.

일반적으로 환경변수에 CLASSPATH가 제대로 세팅되어 있으면, 해당 클래스파일이 있는 폴더로 이동해서

java 해당클래스파일명

하면 해당 클래스의 메인메서드가 호출되어야 한다.

하지만 환경변수에 세팅한 CLASSPATH와는 별도로 이클립스는 workspace를 따로 구성하여 잡기 때문에 이런 문제가 발생한다고 한다.


해결책은 다음과 같다.


예를 들어 d:\workspace\a-project\WebContents\WEB-INF\classes\net\daum\comm 에 있는 TestClient.class를 호출한다고 가정할 때 


1. class 파일이 생성되는 폴더로 이동한다.

이때 주의할 것은 해당 클래스파일이 있는 폴더가 아니라 class파일이 생성되는 root 폴더로 이동해야 한다.

즉  d:\workspace\a-project\WebContents\WEB-INF\classes 로 이동해야지, \net\daum\comm 까지 이동하면 안된다.


2. java -classpath .; 페키지명.클래스명

-classpath .; 

현재폴더를 클래스패스로 세팅한다는 의미다.


java -classpath .; net.daum.comm.TestClinet


그러면 정상적으로 클래스파일이 호출된다.



도움받은 곳 : http://blog.daum.net/nothing-everything/7232224


728x90