본문 바로가기

에러 해결기록6

[Spring] JWT 사용시 javax/xml/bind/DatatypeConverter 에러 현재 자바 17, 스프링 부트 3 버전을 사용하고 있다.사용자 로그인을 처리하고 JWT를 사용하기 위해 아래 의존성을 추가해주었다.implementation 'io.jsonwebtoken:jjwt:0.9.1' 그러나 JWT를 생성, 리턴하는 과정에서 javax/xml/bind/DatatypeConverter 예외가 발생했다. 해당 예외는 JWT를 생성하는 과정에서 javax.xml.bind.DataTypeConverter를 사용하는데, 이를 찾지 못해 발생한 에러이다. JDK 11부터 관련된 Java EE 모듈이 제거되었다고 한다. (아래 공식문서 내용 참고)Risks and AssumptionsJava EE modulesThe risk of removing the Java EE modules is th.. 2024. 5. 7.
Git SSH 등록, CLI 사용을 위한 인증(remote: Support for password authentication was removed on August 13, 2021.) 이번에 맥북을 바꾸면서 설정을 새로 해주어야하는 부분들이 많이 생겼다. 그중에 한 부분이 Github과 관련된 부분이었는데, 이전엔 연결 관련 설정이 되어있어서 push/pull에서 문제가 생기지 않았으나 이번에는 해당 과정에서 에러가 발생했다. 에러문구 - remote: Support for password authentication was removed on August 13, 2021. 관련하여 해볼 수 있는 몇가지 방법에 대해 정리해보았다. ❯ SSH 등록 ssh는 Secure shell의 줄임말로, 보안이 강화된 shell 접속을 의미한다. CLI(터미널)에서 다른 PC에 접속하거나 요청을 할 때 사용하며 비대칭키를 이용해 사용자를 인증한다. github에 ssh 공개키를 등록하는 방법, ssh.. 2024. 1. 18.
[JAVA] JWT, WeakKeyException JWT 실습을 하는데 분명 회원가입한 아이디와 비밀번호가 일치하는데도 JWT가 생성되지 않고 오류가 발생했다.관련 내용을 확인해보니 WeakKeyException이 발생했기 때문이었다.WeakKeyException이란 암호화를 할 때 HMAC-SHA 알고리즘에 사용되는 키는 반드시 256비트(32바이트) 이상이어야하는데,해당 길이보다 작을 경우 던져지는 오류이다. (실습 자료에 적힌 그대로 작성했었는데 해당 키 길이가 32바이트 미만이었다.) 해당 오류를 해결하기 위해서는 HMAC-SHA 알고리즘에 사용되는 키의 크기를 256비트 이상으로 늘려주면 쉽게 해결할 수 있다. 2023. 5. 17.
Spring Boot / Spring Data JPA / H2 초기 데이터 설정 애플리케이션 코드를 작성하다보면 초기 데이터가 있어야하는 경우들이 있다. (PATCH, GET, DELETE 기능 점검 등) 물론 테스트 케이스를 작성하여 실행할수도 있지만, Postman 등을 활용해 간단히 확인하고싶을 때 활용할 수 있는 방법이다. 1. application.yml 설정파일 수정 현재 진행중인 과정에서 hibernate: ddl-auto: true로 설정하여 사용하고 있다. Hibernate가 애플리케이션이 시작되면 데이터베이스 테이블을 자동으로 설정해준다. 그러면 그렇게 생성된 테이블에 초기 데이터를 자동으로 추가해주면 된다. 하지만 여기서 한가지 문제가 있다. Hibernate 와 Sql의 기본 우선순위로 인해서 데이터를 추가하는 sql 파일이 먼저 실행되게 된다. 그러면 테이블이.. 2023. 5. 5.
[MAC] 사용중인 포트 종료하기 애플리케이션 코드를 작성하고 8080 포트를 이용해 실행하다보면 이미 해당 포트로 실행중인 코드가 있어 실행되지 않는 오류가 발생할때가 있다. 이 때 실행중인 코드를 종료하기 위해 다음과 같은 방법을 사용할 수 있다. 1. 현재 실행중인 포트 PID 찾기 터미널에서 아래 코드를 입력하여 해당 포트의 PID(프로세스 번호)를 알아낸다. lsof는 list open files 의 약자로 열려있는 파일에 대한 정보를 출력해준다. lsof -i :검색하려는 포트번호 2. 해당 프로세스 종료하기 아래 코드를 입력하여 해당 포트의 프로세스를 종료한다. kill은 프로세스를 종료할 때 사용하는 명령어이다. kill -9 PID번호 아래 그림과 같이 다시 lsof로 검색했을때 아무것도 나오지 않으면 정상적으로 종료된 .. 2023. 4. 17.
문자열을 요소로 갖는 배열의 가장 긴 글자, 작은 글자 제거하기 문제 자체는 아주 간단했는데, 처음 풀이 방향을 잡을때 놓친 부분때문에 한참을 헤맨 문제이다. String 타입의 요소를 갖는 배열에서 가장 길이가 짧은 문자열과 가장 길이가 긴 문자열을 제거한 배열을 리턴하는 메서드를 작성하는 문제였다. List를 사용한 방법과 arraycopy를 사용한 방법 두가지로 작성했는데, 동일한 부분을 놓쳐서 정답이 맞기도/틀리기도한 결과를 계속 냈다. public static String[] removeExtremes(String[] arr) { // --------------------------- 1안 --------------------------- if (arr.length == 0) return null; int[] lengths = new int[arr.lengt.. 2023. 3. 21.