[Spring] java.lang.exceptionininitializererror 에러 잡는법 - Windows 10

Tomas.Lee·2022년 1월 16일
3

web study

목록 보기
4/14

사람 미치게 만드는 에러.주말을 다 쏟아붇게 만든 에러.
'java.lang.exceptionininitializererror'

Dynamic Web Project를 이용하여 JSP CRUD 만들기를 끝낸 후 Spring CRUD를 본격적으로 시작하기 위해 Legacy Project - MVC Project를 만드려는 순간. 유명하고도 유명한 java.lang.exceptionininitializererror 에러가 발생했다.

이미 TA님을 통해 해결 방법을 들었기에 문제 없이 해결될 줄 알았다. 하지만 이것은 매우 잘못된 생각이었다.

지금부터 해결 과정을 함께 살펴보자.

java.lang.exceptionininitializererror 발생

위 에러는 Spring Legacy Project가 아직 java 17을 지원하지 않아서 발생하는 에러라고 알려져있다. 버전이 문제라면 지원하는 버전에 맞춰 java를 깔면 된다!

해결방법이 이렇게 간단하다면 주말 내내 여기에 붙잡혀 있지 않았겠지..

시도방법 1. sts.ini 파일 수정(실패)

가장 잘 알려진 해결방법이다. 나의 경우 Oracle JDK 1.8 버전이 설치되어 있고 Java 환경 변수 또한 1.8에 맞춰져 있다.

따라서 로컬 환경에 맞춰 sts4 패키지 파일을 수정해주면 된다.

sts.ini 파일을 건드리지 않았다면 사진과 같은 모습을 가지고 있을 것이다.

여기서 vm에 작성되있는 부분을 지우고 JDK 설치 폴더\bin\javaw.exe로 바꿔준다.

그리고 Dosgi.requiredJavaVersion도 내가 설치한 1.8로 바꿔준다.

바꾼 후, 부푼 기대를 안고 sts4를 돌려봤지만 돌아오는건

could not create the java virtual machine

위 에러가 나왔다.

또 다시 구글링 시작.

시도방법2. sts.ini 파일 2차 수정(실패)

위에서 vm 밑에 적힌 Path를 수정했다.여기서 javaw.exe를 빼주면 된다는 글을 봤다.

그래서 JDK 설치 폴더\bin 로 바꿨다.

이제는 되겠지 싶은 마음에 다시 실행했다.

하지만 이번엔 새로운 에러가 뜨는데...

An error has occurred. see the log file. c:\~~~~~\~~~\configuration\~~

하..때려치고 싶다..또다시 구글링

시도방법3.sts4 재설치(실패)

sts4를 설치하려면 상당히 귀찮다.

또 sts4는 설치하는 IDE가 아닌 압축을 풀어 실행하는 방식이다.

따라서 제어판에서 삭제하는게 아니라 뭐 어떻게 삭제하는지도 모른다.

내가 찾은 방법은 sts4 - Help->Installation Details ->Installed Software - sts4를 찾고 uninstall하는 것이다.

어찌저찌 삭제를 했고 겨우겨우 재설치 후 셋팅을 맞췄다. 그리고 돌렸다.

Legacy Project에서 MVC를 선택하고 NEXT 버튼을 누르니 다시 java.lang 에러가 발생한다.

3번까지 시도하는데 꼬박 하루가 걸렸다.

별 수 있나..다시 구글링 해야지..

시도방법4. JDK 1.8 -> JDK 11 버전 변경 & sts.ini 수정(성공!)

STS4는 JDK 1.8에 대해서 지원을 하지 않고 JDK ver.11를 지원을 한다고 한다.

그래서 제어판에서 JDK 1.8을 삭제하고 JDK 11을 설치했다.

환경 변수 설정 & 커맨드 창을 통한 자바 버전 확인은 필수!

그리고 가장 처음 시도했던 sts.ini 파일을 수정했다.

하지만 방식이 조금 다르다.

처음 시도한 방식은 기존에 있던 vm 내용을 지우고 다른 Path로 대체했는데

이번엔 기존에 제공된 PATH를 지우지 않고 새로운 PATH를 추가하는 방식으로 시도했다.

그리고 Dosgi.requiredJavaVersion을 11로 바꿨다.

그 결과... 성공이다..

진짜 만 이틀, 일수로 계산하면 3일을 꼬박 몰두한 결과가 헛되지 않아 너무 좋았다...

11이 아닌 다른 버전을 사용해야 하는 경우!?

JDK 1.8을 설치하고 각 프로젝트에 맞는 버전을 사용하면 된다.

프로젝트 우클릭 - properties - java build path - libraries에서

현재 사용중인 자바 버전을 확인할 수 있는데(아마 defalut값인 1.6으로 되어있을 것이다)

만약 버전이 다르다면 기존 버전을 지우고 ADD Jre를 선택 후 맞는 버전을 add하면 된다.

나같은 경우에도 이번 프로젝트에서 1.8을 사용중이라 걱정했는데

위에 적어놓은 방법으로 돌려보니 문제없이 돌아갔다!

그러니 너무 걱정하지 마세용 ㅎㅎ

너무 힘들지만 그래도 나름 값지다

앞으로 개발자로 살아가면서 여러번 개발 환경이 바뀌고 따라서 여러번 셋팅을 해야할 것이다.

이 에러는 작년 수업때 분명 겪었던 에러이다.

하지만 그땐 교수님이 알려주신 방법을 그대로 따라가기만 했고 기록도 하지 않아서

이번에 똑같은 에러가 발생했을 때 아무것도 기억이 나지 않았다.

그러나 이번엔 혼자 힘으로 해결하고 기록도 해놨기 때문에

똑같은 에러가 생긴다면 잘 헤쳐나갈 것이라고 생각한다!

혹시라도 이 글을 보시는 분이 계시다면 부디 성공하시길..

profile
System.println.out("Hello World");

0개의 댓글