2009년 12월 4일 금요일

Eclipse start Error 해결하기 (JVM terminated. Exit code=-1)


개발을 진행하던 모듈의 JDK 버전을 1.5 에서 1.6으로 업그레이드 하기로 결정했다. 설치한 소프트웨어는 다음과 같다.

OS : Window 7 홈 프리미엄
JDK : jdk-6u17-windows-i586.exe
Eclipse : eclipse-jee-galileo-SR1-win32.zip

회사에서 사용하는 노트북은 Window7이기 때문인지 JDK 1.6(jdk-6u17-windows-i586.exe)을 설치하고 eclpe(eclipse-jee-galileo-SR1-win32.zip)를 설치하니 아무런 문제 없이 개발환경이 잘 세팅되었다.

그런데 문제는 집에서 같은 환경을 설치하려고 할때 발생하였다. 사무실과 다른 점은 OS가 Window XP 라는 점 뿐인데 실행이 정상적으로 되지 않았다. 실행시에 다음과 같은 에러 메세지가 나타난다.


















"JVM terminated. Exit code=-1" 키워드로 검색을 해보니 Eclipse Start Error 라고 해서 많은 해결책들이 제시되고 있다. 각 해결책들의 장단점과 몇가지 추가적인 정보를 정리하면 다음과 같다.

1. eclipse.exe 바로가기를 만든후에 -vm 파라미터를 이용하여 어떤 JVM을 사용할지 정해주는 방법
  바로가기 속성에 아래와 같이 설정하고 실행시키면 된다.

  C:\eclipse\eclipse.exe -vm "C:\Program Files\Java\jdk1.6.0_17\jre\bin\javaw" 
제일 간단한 방법이기는 하지만 JDK를 바꿀경우 항상 변경해야 하고 실행시에는 만들어진 단축키만을 이용해야 한다는 단점이 있다. 그래서 Eclipse를 실행시킬 경우 JVM 파라미터를 별도로 관리하는 eclipse.ini를 이용하는 방법도 있다. 그리고 이 방법은 모두 바로가기의 속성에 파라미터를 변경시키는 방법과 동일하다. 결국 eclipse.ini가 바로가기에 파라미터를 추가하는 것을 모아 놓은 것이라고 생각하면 된다.

2. launcher.XXMaxPermSize 관련 정보를 수정하는 방법
eclipse.ini 의 내용중에 launcher.XXMaxPermSize 관련된 정보를 삭제하는 방법이다.
삭제대상인 부분은 다음과 같다.

--launcher.XXMaxPermSize
256M

아주 간단한 방법이기는 하지만 수정하는 파라미터의 의미가 이클립스가 사용하는 메모리를 제한하는 것이기 때문에 이렇게 해 놓고 이클립스에서 많은 작업을 할경우 시스템이 죽는 경우가 있어서 사용하기 좋지 않은 방법이다.
3. Xmx512m 을 수정하는 방법
JVM의 최대 메모리를 설정하는 Xmx512m 파라미터를 수정하여도 문제는 해결된다.

Xmx256m

이것도 간단한 방법이기는 하지만 기껏 개발 PC의 메모리를 4GB로 용량을 늘려놓고 JVM에서는 512도 사용하지 못하기 때문에 추천하고 싶은 해결방안은 아니다.
4. 사용해야할 VM을 명시적으로 적용
1번 방법인 바로가기의 속성을 고치지 않고 같은 방식으로 VM을 지정해 주는 방법이다. clipse.ini 설명 문서의 Specifying the JVM  를 참고하여 아래과 같이 지정해 주면된다.

-vm
C:\Program Files\Java\jdk1.6.0_17\jre\bin\javaw

주의할점은 항상 -vmargs 설정보다 위에 위치하여한다. -vmargs 설정보다 아래에 있는 설정은 무시되기 때문이다.
가장 추천하고 싶은 방법은 4번이다. 하지만 각 상황에 맞게 알맞은 방법을 사용하면 된다.

문제가 발생하는 정확한 원인을 알고 싶어서 꽤 오랜 시간 정보를 검색해 보았으나 명확한 원인은 발견되지 않고 있다. 참고로 JDK1.5를 사용하는 경우도 마찬가지의 오류가 발생한다. 모든 환경에서 발생하는 것은 아닌 것으로 판단되나 정확히 어떤 원인인지도 잘 모르겠다. 혹시 아시는 사람이 있다면 의견이나 트랙백을 부탁한다.

댓글 3개:

  1. trackback from: [galileo] JVM terminated exit code = -1
    OS : windows7 64bit JAVA : JDK1.6 Eclipse version : eclipse-jee-galileo-SR1-win32 I didn't understand why It happened. I'd already set the JAVA_HOME as JDK 1.6 home. Anyway, when Eclipse starts, it doesn't refer the %JAVA_HOME. So, I had to add the "-vm..

    답글삭제