1. 현상
: 라이브러리 버전 업을 하려고 pom.xml에서 버전을 수정하고 maven update를 시도했다.
그런데 jar 파일을 받지 못했고, lastUpdated 가 붙은 파일들을 열어봤을 때 다음과 같은 에러 메시지를 발견했다.
https\://repo.maven.apache.org/maven2/.error=Could not transfer artifact [업데이트 할 라이브러리] from/to central (https\://repo.maven.apache.org/maven2)\: sun.security.validator.ValidatorException\: PKIX path building failed\: sun.security.provider.certpath.SunCertPathBuilderException\: unable to find valid certification path to requested target
2. 원인
: ai에게 물어보니 Java가 Maven Central(repo.maven.apache.org)의 SSL 인증서를 신뢰하지 못해서 발생한다고 한다.
주로 회사 보안망(프록시)이나 백신이 인증서를 가로챌 때 발생한다고 한다.
3. 해결
: 해당 사이트의 인증서를 직접 Java에 등록한다.
① Java에 등록하기 전에 먼저 환경설정을 미리 확인해 두는 것이 좋다.
내 PC의 java 버전과 이클립스에서 사용하는 java 버전이 같은지 확인해 보자... (나는 달라서... 통일했다 ㅠㅠ)
같은 경로의 java를 사용하고 있는지 확인하고, java 폴더 내에 cacerts 경로를 파악한다.
(security 폴더 안에 있는데 이 security 폴더의 위치가 버전마다 약간씩 다른 것 같으니 꼭 확인 바람.)
② https://repo.maven.apache.org 사이트에 접속한다. (Chrome 기준)
주소창 왼쪽의 ssl 표시(? 사이트 정보 보기)를 클릭 > [이 연결은 안전합니다] 클릭 > [인증서가 유효함] 클릭 > 인증서 뷰어가 나온다.
세부정보 탭을 클릭하면 맨 아래에 [내보내기] 버튼이 보인다. 버튼을 클릭하면 인증서 파일(.crt)이 다운로드 된다.
③ cmd에서 keytool 명령어로 인증서를 java cacerts에 등록한다.
keytool -import -alias [인증서별칭] -keystore "①에서 확인한 cacerts 경로" -file "②에서 다운로드 받은 .crt 경로"
명령어를 치면 패스워드를 등록하라고 나온다 : changeit 을 입력한다. (이 과정을 생략하려면 위의 명령어 끝에 -storepass changeit 을 추가한다.)
이 인증서를 신뢰합니까? 라는 질문이 나온다 : y 또는 yes 또는 예를 입력한다.
④ 이클립스를 종료하고 재시작한다.
그리고 업데이트하고자 하는 라이브러리의 버전 디렉토리를 삭제하고 maven update를 실행하여 라이브러리 버전 디렉토리가 다시 생성되는지 확인한다. 그리고 내부에 lastUpdated가 붙지 않은 jar와 pom 파일이 존재하는지 확인한다.
생성되었다면 성공! 그렇지 않다면 lastUpdated가 붙은 파일을 열어서 에러메시지를 확인한다. (다시 무한반복... )
'문제해결을 위한 몸부림' 카테고리의 다른 글
| [Git] rejected - non-fast-forward (0) | 2024.12.23 |
|---|---|
| jpeg 파일 색변조에 대해... (1) | 2024.03.29 |
| [IE특수] IE에서 로딩 GIF가 움직이지 않는 현상 (0) | 2020.04.23 |
| [Eclipse] Unknown referenced nature: org.springframework.ide.eclipse.core.springnature (0) | 2020.03.26 |
| 이미지를 반환하는 API - 1 (0) | 2019.12.16 |