본문 바로가기
프로그래밍/개발도구, 프로그램

전자정부표준프레임워크 3.10 과 OpenJDK 16에서 WebappStructureSerializer 에러

by pentode 2021. 7. 28.

전자정부표준프레임워크 3.10을 설치하고 이것저것 해보고 있습니다. 처음 했던게 업데이트 하는데 몇몇 업데이트 사이트 변경으로 오류가 발생해서 해결 했던 것입니다("전자정부 표준 프레임워크 eGovFrame 3.10 업데이트 오류 수정하기").

 

두 번째는 Kotlin 플러그인을 설치하려고 하는데, JDK 11이 필요하다는 오류로 인해서 현재 최신인 OpenJDK 16을 설치하여 해결 하였습니다("전자정부표준프레임워크 3.10에 Kotlin 플러그인 설치오류 및 OpenJDK 16 설치하기").

 

오늘 전자정부표준프레임워크 3.10의 모든 업데이트 가능한 항목을 업데이트 했습니다. 그랬더니 eclipse의 버전이 2020-06에서 최신인2021-06으로 바껴 버렸네요. 이클립스가 시작할때 스플래시 스크린이 바껴서 알 수가 있었습니다.

 

eclipse 2021-06 스플래시 스크린

 

eclipse 버전 변경이 전자정부표준프레임워크에 문제를 일으키지 않을까 싶어서 전자정부표준프레임워크 템플릿 프로젝트인 Simple Home 템플릿을 설치해 보았습니다. 설마했는데 오류가 발생했습니다. 오류 내용은 다음과 같습니다.

 

Could not initialize class org.apache.maven.plugin.war.util.WebappStructureSerializer

 

이것저것 이제까지 바꾼것을 롤백 해보며 테스트해본 결과 원인은 OpenJDK 16에 있었습니다. OpenJDK 16에서는 최초의 eclipse 2020-06버전과 업데이트된 eclipse 2021-06 버전 모두에서 에러가 발생했습니다.

 

구글링해본 결과 JDK 16은 더 엄격해진 권한들로 인해 몇몇 플러그인들과 문제를 일으킨다고 합니다. 위 오류는 maven 플러그인중 maven-war-plugin에서 문제를 일으키는 것이었습니다.

 

찾은 해결 방법은 세가지가 있습니다.

 

1. JDK 버전을 Kotlin 플러그인에 필요한 최소한인 11 버전으로 변경합니다.

 

- 변경 후 메이븐 업데이트를 수행하면 에러가 없어졌습니다. Kotlin 플러그인도 정상적으로 동작합니다

 

2. maven-war-plugin을 더 높은 버전으로 변경합니다.

 

- 원래 버전은 Effective POM에서 확인하니 2.2 버전은 사용하고 있었습니다. 이것을 현재 최신버전인 3.3.1로 변경하고, 메이븐 업데이트를 하니 에러가 없어졌습니다.

 

- 다음 내용을 <build><plugins> 아래에 넣어 기존의 플러그인을 오버라이드 합니다.

 

<plugin>
  <artifactId>maven-war-plugin</artifactId>
  <version>3.3.1</version>
  <executions>
    <execution>
      <id>default-war</id>
      <phase>package</phase>
      <goals>
       <goal>war</goal>
      </goals>
    </execution>
  </executions>
</plugin>

 

3. 이클립스 설정파일에서 끝에 다음을 추가합니다.

 

--illegal-access=permit

 

세가지 방법중 어느것을 사용하더라도 에러를 해결할 수 있었습니다. 계속 사용해 보면서 어떤 방법이 제일 좋은지 확인해 봐야 겠습니다.

반응형