3줄 요약
- 새로운 노트북을 사고 윈도우 11 os를 설치함
- 윈도우 10에서는 잘 열리던 스프링(maven, mybatis) 프로젝트가 열리지 않음
- 노트북에 윈도우 10을 깔고 다시 돌리니 정상적으로 작동함.
발단
기존에 사용하던 노트북이 회사 프로젝트를 돌리기에 성능상 버거운 점이 많아서 최근 새로운 노트북을 한대 장만했다. 새로운 노트북이니까 윈도우 11 os를 탑재시키고 이전 노트북보다 더 좋은 CPU(와 그래픽카드)로 열심히 코딩(과 게임)을 할 생각에 마음이 들떴다.
새로 산 노트북을 들고 개발환경을 갖춘 후(java, tomcat, intellij 등 자바 스프링 개발을 위한 개발환경) 회사 프로젝트를 로컬서버로 구동했다. 그리고 마주한 에러.
ibatis.exceptions.persistenceexception
(그리고 콘솔 곳곳에 적혀 있는 수상한 메세지) Password Not Matched!!!
뭐지? 싶은 마음이 들었다. 기존 노트북에서는 잘 돌아가는 프로젝트가 새로운 노트북에서, 그것도 같은 개발환경을 갖췄는데도 돌아가지 않는다는게 좀처럼 이해가 가지 않았기 때문이었다. 이해가 가지 않기로는 콘솔에 적혀 있는 에러메세지도 마찬가지였다. 나는 코드를 전혀 바꾼 적이 없는데 persistenceexception? 그리고 무슨 비밀번호가 맞지 않다는거지? 나는 비밀번호를 바꾼 적이 전혀 없는데..?
해결의 실마리
이 문제를 해결하기 위해 며칠을 쏟아 부었다. 처음에는 콘솔에 찍혀 있는 에러 메세지를 검색해서 해결에 대한 힌트를 얻으려고 했었는데 구글에 검색 결과 단 한건의 게시글도 없다는 사실에 경악했다. 심지어 하루는 어떻게 웹을 타고 타서 중국 버전 stack overflow 같은 프로그래밍 커뮤니티 사이트도 들어갔었는데, 거기에도 나와 같은 경우를 겪는 사람이 없었음...
새로운 노트북은 개발용이 아니라 단순 게임용으로 산건가..? 그럼 왜 노트북을 샀을까, 플레이 스테이션이나 xbox를 샀으면 훨씬 쌌을텐데.. 하는 생각에 노트북을 환불받을 방법까지 찾아봤다. 그러다 도대체 무슨 비밀번호를 말하는걸까 궁금해져 콘솔에 적혀 있는 에러 메세지를 꼼꼼히 읽기 시작했다.
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: ### Error querying database. Cause: java.lang.IllegalArgumentException: password not matched!!! ### The error may exist in file [C:\Users\이하는 파일 경로] ### The error may involve egovframework.com.ecms.board.service.BoardMapper.selectBoardArticleList-Inline ### The error occurred while setting parameters ### SQL: [이하는 sql 쿼리문]? ### Cause: java.lang.IllegalArgumentException: password not matched!!!
mybatis에서 password not matched라는 메세지가 뜬다... 뭔가 이상했다. mybatis은 데이터베이스에 접근하는 것을 도와주는 라이브러리인데 비밀번호가 무슨 상관이지 하는 생각 때문이었다. 순간, 문득 스프링 시큐리티가 회원의 정보를 데이터베이스에 암호화하여 저장하는 것처럼 mybatis도 그런 메커니즘이 있는 것은 아닐까 하는 생각이 들었다.
구글에 'mybatis 암호화'라는 검색어로 검색을 해 보았다. 그리고 아래와 같은 제목의 게시글을 발견했다.
TypeHandler... 어디에서 본 이름인데. 다시 콘솔로 들어가 에러 메세지를 읽어보았다. 그리고 빙고, 콘솔메세지에 적혀 있는 TypeHandler를 발견했다.
해결
mybatis의 암호화 메커니즘은 자세히 공부하지 못했지만(어려워 보였다.....) 뭔가 문제의 원인은 운영체제인 윈도우 11에 있을지도 모르겠다는 생각이 들기 시작했다. 코드의 수정이 없는데 윈도우 10에서는 정상적으로 열리는 프로젝트가 윈도우 11에서는 '암호화' 관련해서 열리지 않는다는게 마치 버전의 호환성과 관련이 있는 것 같다는 느낌이 들었기 때문이었다.
윈도우 10으로 바로 os를 덮어버릴까 고민하다 가상머신에서 먼저 테스트를 해보고 진행해보자는 생각에 가상머신에 윈도우 10을 구동했다. 귀찮았지만 다시 개발 환경설정을 갖추고 프로젝트를 클론해 로컬환경에서 구동해봤다. 그리고 프로젝트가 정상적으로 작동하는 것을 확인할 수 있었다.
이후, 윈도우 11을 밀어버리고 윈도우 10을 노트북에 깔았다. 다시 새로운 운영체제에 개발환경을 맞추고 프로젝트를 돌렸다. 역시 성공이었다.
결론
윈도우 11의 정확히 어떤 부분이 문제의 원인인지는 모르겠지만, 윈도우 11이 아직 완숙히- 충분히- 안정화가 되지 않은 것은 분명한 것 같다. UI는 참 예쁘던데. 아쉽다.
'메모 & 삽질기록보관소' 카테고리의 다른 글
[strapi] NginX 리버스 프록싱 관련 이슈 (0) | 2022.07.07 |
---|---|
[JPA] 스프링이 엔티티를 인식하지 않는 것 같습니다! (0) | 2022.06.18 |
[jqeury] ajax에서의 parse error | 스프링과 자바스크립트의 부조화 (0) | 2022.03.13 |
[메모] 배포 관련 리눅스 명령어 (0) | 2022.01.19 |
[EC2 - 서버 배포] TemplateInputException (2) | 2022.01.19 |