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

프로그래밍/개발도구, 프로그램 2021. 7. 28. 02:18
반응형

전자정부표준프레임워크 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

 

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

반응형

댓글을 달아 주세요