환경 : jdk 11, springframework 5.0.2
[로그]
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.springframework.cglib.core.ReflectUtils$1
WARNING: Please consider reporting this to the maintainers of org.springframework.cglib.core.ReflectUtils$1
WARNING: Use --illegal access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
이 로그는 일종의 경고 메세지일 뿐 실제로 프로그램의 구동에 지장을 주는 오류는 아니다
하지만 로그가 신경쓰여서 해결방법을 찾아보았다
오류메세지를 구글링해보니 jdk와 스프링 버전으로 인한 문제로 파악되었다
원인을 좀 더 파고들어 보면 Java 9 이후 모듈이 도입되면서 reflection에 대한 경고가 발생하기 때문인데,
더 자세한 내용은 해당 문서를 참고하길 바란다 :
https://www.logicbig.com/tutorials/core-java-tutorial/modules/illegal-access-operations.html
해결법
모듈이 없는 이전 버전인 jdk 8을 사용하거나
jdk 11에 맞게 버전을 수정 ─ 혹은 아래처럼 예외처리를 해주어야 한다
1. 위의 문구는 경고일 뿐 프로그램의 동작을 방해하는 에러가 아니다.
-> 코드는 정상적으로 작동하기 때문에 --illegal-access=permit 설정을 입력하여 예외를 설정한다
<plugin>
<configuration>
<argLine>--illegal-access=permit</argLine>
</configuration>
</plugin>
적용한 모습
2. spring 버전이 낮은 경우 jdk 버전을 1.8로 바꾼다
윈도우의 경우 환경변수 순서만 바꾸면서 사용할 수 있다
2-1. 혹은 pom.xml에서 스프링 버전을 올린다
springboot는 2.1, spring을 사용하면 5.1.5 이상의 버전으로 올리면 된다
적용한 모습
올린후에는 maven > project update를 눌러준다
3. 그럼에도 해결이 안되는 경우
오류 메세지를 읽고 어느 부분에서 문제가 있는지 확인한다
WARNING: Illegal reflective access by org.springframework.cglib.core.ReflectUtils$1
-> 스프링 프레임워크 버전이 jdk와 안맞아서 출력되었다
-> springframework의 버전을 올려 해결한다
해당 블로그처럼 메세지 2번째 줄의 메세지가
org.apache.poi.util로 시작한다면
poi 버전으로 인한 문제이기 때문에 버전을 업그레이드 해주면 된다
> 나의 경우
jdk 8로 바꾸는 것은 의미가 없었고, 스프링 프레임워크의 버전을 5.1.5로 바꾼 후
해당 경고 메세지가 사라졌다
++
윈도우에서는 환경변수를 설정하여 jdk를 실행할 수 있는데,
나의 경우 jdk 8과 11을 번갈아 사용하기 때문에 환경 변수에서 두 경로를 모두 추가 후
필요한 버전의 순서를 위쪽으로 바꾸어 사용한다
바꾼 후에는 cmd 창에서
java -version
javac -version
을 입력하여 제대로 바뀌었는지 확인할 수 있다
'개인기록' 카테고리의 다른 글
[오류/해결] spring boot에서 mybatis 테스트하기 (0) | 2022.10.30 |
---|---|
[해결] jsp에서 css, js 경로를 못 찾는 문제 (0) | 2022.09.23 |
[기록] 인텔리제이 프로젝트 UTF-8 설정 (0) | 2022.09.05 |
[오류/해결] jsp에서 db로 insert시 한글 깨짐 현상(오라클) (0) | 2022.08.26 |
[오류/해결] sequence 번호 증가(1 -> 21 -> 41) | Oracle (0) | 2022.08.22 |