본문 바로가기

Various Error

[eGovFramework] pom.xml의 ExceptionInInitializerError

에러 및 해결 방법

eGovFrame Web Project에서 Generate Example로 샘플 프로젝트를 만들고나서 pom.xml에 다음과 같은 에러가 확인

Exception java.lang.ExceptionInInitializerError: Cannot access defaults field of Properties [in thread "Worker-11: Updating Maven Dependencies"]

 

위의 에러는 아래의 플러그인을 추가하여 해결 완료

<plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-war-plugin</artifactId>
	<version>3.3.2</version>
</plugin>


발생 원인
java.lang.ExceptionInInitializerError
  • 클래스 초기화 중 예외가 발생하였음을 의미
  • Cannot access defaults field of Properties라는 메세지로 볼 때, Maven이 내부적으로 기본값(Properties)을 설정하는 과정에서 문제가 발생
maven-war-plugin의 역할
  • Maven에서 WAR(Web Application Archive) 파일을 빌드하기 위한 플러그인
  • pom.xml에 <packaging>war</packaging>으로 설정된 경우 Maven은 WAR 파일을 빌드하려면 이 플러그인을 필요로 함

Maven의 기본 동작
  • Maven은 플러그인을 명시적으로 선언하지 않아도 기본 버전을 사용하려고 시도를 함
  • 하지만 특정 버전의 Maven에서 maven-war-plugin을 찾지 못하거나 기본 설정이 깨지면 위와 같은 초기화 에러가 발생

 

에러 발생 정리
  • maven-war-plugin의 누락 또는 Maven의 기본 설정에서 플러그인을 찾지 못한 것
  • 프로젝트에 필요한 플러그인을 명시적으로 추가함으로써 Maven이 제대로 동작하도록 설정
참고
  • 플러그인의 버전은 프로젝트의 Maven 버전과 호환되도록 설정해야 하며, Maven 3.x 이상을 사용 중이라면 maven-war-plugin 최신 안정 버전을 사용하는 것을 권장