Spring - ContentCachingRequestWrapper에서 getContentAsByteArray가 빈 값을 반환하는 이유와 해결 방법
·
나의 에러 일지
배경실제 프로젝트에서 Request Body로부터 traceId를 전달받아 이를 저장하고, 이후 로깅이나 트레이싱 등에 활용해야 하는 요구사항이 있었다. 이를 위해 Spring에서 제공하는 ContentCachingRequestWrapper를 사용하기로 했다. ContentCachingRequestWrapper는 원래 InputStream, Reader, 혹은 @RequestBody로 Request Body를 한번 읽고 나면 다시 읽을 수 없다는 한계를 깔끔하게 해결해 주는 유용한 클래스이다. 덕분에 traceId 같은 중요한 데이터를 여러 계층에서 반복적으로 로깅하거나 재사용할 수 있다. 그런데 실제로 적용하는 과정에서, ContentCachingRequestWrapper로 감쌌음에도 불구하고 Requ..
Docker - standard_init_linux.go:xxx: exec user process caused "exec format error“ 원인과 해결 방법
·
나의 에러 일지
배경기존에는 Dockerfile에서 Java 애플리케이션을 실행할 때 ENTRYPOINT에 모든 JVM 옵션과 실행 명령어를 길게 나열해서 작성했었다. 하지만 JVM 옵션이 많아지고 환경별로 다른 설정이 필요해지면서 관리가 어려워졌다. 그래서 별도의 쉘 스크립트 파일에서 이런 복잡한 실행 로직을 관리할 수 있도록 entrypoint.sh를 만들게 되었다. entrypoint.sh를 추가하여 Docker 컨테이너를 실행하자 entrypoint.sh에서 예상치 못한 format 에러가 발생했다.standard_init_linux.go:xxx: exec user process caused "exec format error“ 개발 환경DockerPortainerLinuxJava 17Spring Boot 3.4..
Chrome(크롬) - ERR_UNSAFE_PORT 원인과 해결방법
·
나의 에러 일지
회사에 이직한 첫날, 신규 입사자 가이드에 따라 개발 환경을 세팅하다가 예상치 못한 에러를 만났다. 바로 ERR_UNSAFE_PORT. 지금 다니는 회사는 보안을 위해 내부망을 사용한다. 내부망 특성상 특정 포트로만 접속해야 했는데, 하필이면 그 포트가 크롬에서 "안전하지 않은 포트"로 분류되어 있었다. 다시 이 에러를 만났을 때 당황하지 않고 해결할 수 있도록, 경험을 정리해본다. 문제크롬에서 특정 포트(예: 6000, 6666 등)로 접속 시 아래와 같은 에러 메시지가 뜬다.www.naver.com:6000으로 접속하면 아래 이미지처럼 ERR_UNSAFE_PORT를 볼 수 있다. 원인크롬(및 일부 브라우저)은 보안상의 이유로 몇몇 포트로의 접근을 기본적으로 차단한다.해커들이 알려진 포트를 통해 공격을..
IntelliJ - Command line is too long 원인과 해결 방법
·
나의 에러 일지
배경집에서 작업하던 프로젝트를 맥북으로 가져와 작업을 진행했는데, 애플리케이션을 실행하는 과정에서 Command line is too long에러가 발생했다.원인과 해결 방법에 대해 알아보자 개발 환경Java 17Spring Boot 3.4.xGraldeIntelliJ 2024.1.4 (Ultimate Edition)MacOS(M1) Sequoia 15.3.1 원인Command line is too long 에러는 클래스 경로가 너무 길거나 JVM argument가 너무 많을 때 발생한다.대부분의 OS에는 명령어의 문자 수가 제한되어 있다고 한다. 해결 방법1. [메뉴 Run > Edit Configurations 선택] 2. [Modify options > Shorten command line 체크] ..
IntelliJ - Git Log 화면이 안나올 때 원인과 해결 방법
·
나의 에러 일지
배경IntelliJ에서 커밋 히스토리 확인을 위해 Git Log 화면을 열었는데 빈 화면으로 나왔다.빨리 해결해보자 개발 환경IntelliJ IDEA 2024.1.4 (Ultimate Edition)MacOS (Monterey) 원인JetBrains Support 쪽 질문에 비슷한 현상에 대한 글이 있었고 거기에 담당자가 남긴 답변에서 이러한 현상이 발생할 수 있는 두 가지 원인에 대해 언급하고 있다.Git Log, Branch 등이 전혀 보이지 않는 경우 VCS.xml 파일이 없거나 잘못된 리포지토리를 가리키고 있을 수 있다.(VCS.xml에는 GUI를 사용하여 버전 관리 작업을 수행할 수 있도록 프로젝트의 VCS에 대한 정보가 저장되어 있다.)Git Log만 보이지 않는 경우 특정 분기점에서 인덱싱이..
Javascript - Kakao SDK 사용 시 사용자 정보 조회 API 응답에서 CI 항목 전달받지 못하는 문제 원인과 해결 방법
·
나의 에러 일지
개요Kakao SDK를 통해 사용자 정보를 조회해오는 API 응답에서 CI 항목이 제외되어서 카카오 회원가입 중 에러가 발생했다. 개발환경Spring 5.xJava 8JSPMybatisOracle 원인프로젝트에서는 Javascript SDK를 사용했다. ( Kakao Javascript SDK 가이드)이전까지는 CI가 잘 조회되고 있었고 관련 코드를 수정한적도 없었다. 그래서 카카오쪽 정책이 바뀌었을까 하고 찾아봤는데, 쉽게 찾을 수 있었다. 카카오 디벨로퍼에 공지로 올라왔던 것. 관련 글을 살펴보니 정보통신망법 개정안에 따른 조치라고 한다.제23조의6(연계정보의 안전조치 의무 등) ① 본인확인기관이 연계정보를 생성ㆍ처리하는 경우 「개인정보 보호법」 제29조에 따른 조치 외에 연계정보 생성ㆍ처리의 안전성..
JPA - Querydsl-sql 사용 시 Table not found 원인과 해결 방법
·
나의 에러 일지
개요프로젝트를 Mybatis -> JPA, QueryDsl로 마이그레이션하고 있다.복잡한 쿼리가 있어서 서브쿼리를 프롬절에서 사용해야 했는데, QueryDsl-jpa에서는 from절 서브쿼리를 지원하지 않아서 QueryDsl-sql을 사용해야 했다. 이 과정에서 발생했던 에러 처리 과정을 남긴다. 해결 방법은 간단했지만 원인을 알기 위해서 Querydsl, JPA, JPQL, NativeSQL을 조금 깊게 파고들 수 있는 계기가 되었다. 문제 발생쿼리를 테스트하는 과정에서 아래와 같은 에러가 발생했다.ORGANIZATIONLEADENTITY 테이블을 찾을 수 없다고 한다. nested exception is org.hibernate.exception.SQLGrammarException: could not..
Spring Boot - JUnit5 테스트 중 No tests found for given includes 원인과 해결 방법
·
나의 에러 일지
Controller 단위 테스트를 작성하고 테스트를 돌렸는데,  No tests found for given includes 에러가 발생하면서 테스트에 실패했다.import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.view;import co.pes.domain.manager.controller.LoginManag..
React - react_dom_client__WEBPACK_IMPORTED_MODULE_1__.render is not a function 원인과 해결 방법
·
나의 에러 일지
개요React 강의를 따라서 간단한 문구를 출력하는 컴포넌트를 만들고 실행했는데, 화면에 아무 내용도 노출되지 않았다.import React from 'react';import ReactDOM from 'react-dom/client';import './index.css';import reportWebVitals from './reportWebVitals';import Library from './chapter03/Library';ReactDOM.render( );reportWebVitals(); 콘솔을 확인해보니 아래와 같은 에러 문구가 출력되었다.react-dom/client 모듈을 제대로 import하지 못하고 있거나 render 메서드를 잘못 사용하고 있는 것이다.Uncaught Ty..
ibatis/Mybatis - 동적 쿼리에서 발생하는 java.sql.SQLException : 부적한 열 이름 오류 원인과 해결 방법
·
나의 에러 일지
개발 환경Java 8Spring 2.xMavenOracleMybatisIntelliJ 개요Mybatis, ibatis에서는 동적으로 쿼리를 작성할 수 있는 Dynamic Tag 기능을 제공한다.동적 쿼리란 조건에 따라 쿼리를 동적으로 생성하는 것을 말한다. 이를 통해 하나의 쿼리로 다양한 조건을 처리할 수 있다. SELECT * FROM users WHERE 1 = 1 AND name = #{name} AND age = #{age}  위 쿼리는 조건에 따라 아래와 같은 쿼리들을 생성할 수 있다.SELECT * FROM usersSELECT * FROM usersWHERE 1 = 1AND name = '김찬빈'SELECT * FROM users..
Cold Bean
'나의 에러 일지' 카테고리의 글 목록