본문 바로가기

Java

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


에러 메세지
Exception in thread "main" java.lang.ClassFormatError:


클래스 파일을 실행 시킬 때(> java [클래스 파일명]) 나타납니다. 

자바 파일을 컴파일 할 때와 실행할 때 사용된 JDK의 버전이 달라서 생기는 오류 메세지인 것입니다.

즉, 컴퓨터에 JDK가 두 가지 버전 이상 설치되어
컴파일 할 때 주는 명령어 javac 의 JDK 버전과 
실행할 때 주는 명령어 java 의 JDK 버전이 다르다는 것 입니다.

그러므로 javac 와 java 명령어를 하나의 JDK 버전으로 사용하도록 재설정 해 주어야 합니다.

리눅스에서 환경변수 설정을 하는 곳인 
/etc/profile
에 들어가서

export JAVA_HOME=/usr/local/src/jdk1.6.0_06/
export CLASSPATH=./:$JAVA_HOME/lib/tools.jar;
export PATH=$PATH:$JAVA_HOME/bin:

위와 같이 설정 할 버전의 JDK 경로를 설정 해 줍니다.

보통 명령어들이 /usr/bin 에 위치하므로 이곳에
기존의 /usr/bin/java 명령어를 삭제하고
설정할 JDK 버전의 명령어를
 
/usr/local/src/jdk1.6.0_06/bin/java

/usr/bin 에 넣어줍니다.

여러 버전이 설치되어 있으면 나중에 또다른 문제가 발생할지도 모르니
깔끔하게 정리해두시는 것도 좋을 것 같습니다.