[일간에러] error: invalid source release: 21

문제 인텔리제이의 Spring Initializr를 이용해서 JDK 21을 사용하는 스프링부트 프로젝트를 생성했다. 생성할 때 JDK도 잘 설정해 주었는데, 프로젝트 생성 후 서버를 띄워보려고 하니 다음의 에러가 발생하며 컴파일이 되지 않았다. 원인 원인을 찾아보자. 일단 Java 21을 지원하는 Gradle 버전을 찾아본다. https://docs.gradle.org/8.4/release-notes.html#support-for-building-projects-with-java-21 Gradle 8.4 버전부터 Java 21을 지원한다. gradle --version 위에 보이는 것 처럼, 컴퓨터에 설치된 gradle 버전은 Gradle 8.0.2 로 확인된다. 버전이 낮기 때문에 얼핏 보면 설치된 G..

Development/Daily Error 2024.01.12
Apache Commons net 한글 파일명 문제 해결

문제 다음과 같이 Apache Commons net을 이용해 FTP 접속을 하고 FTPClient ftpClient = new FTPClient(); FtpConfig ftpConfig = config.getFtp(); ftpClient.connect(ftpConfig.getHost(), ftpConfig.getPort()); ftpClient.login(ftpConfig.getUsername(), ftpConfig.getPassword()); ftpClient.enterLocalPassiveMode(); ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE); setFileType을 해주지 않으면 다운받아온 파일이 깨진다 재귀적으로 파일 목록을 담도록 코드를 작성했다...

Development/Daily Error 2024.01.10
[Nginx] 413 Request Entity Too Large 문제 해결

Intro 스프링부트 서버 + 앞단에 Nginx 가 있는 구조에서 Post 요청으로 파일을 업로드 하는데 413 에러가 발생했다. 파일 사이즈가 그닥 크지는 않았는데도, 1MB 만 넘으면 여지없이 413 에러가 발생했다. 로컬에서 테스트할땐 괜찮았는데, 개발서버에 배포하고 테스트 할 때 문제가 발생했다. 원인 개발서버에서는 앞단에 Nginx가 한개가 더 추가되어있는데, 그래서 웹서버의 설정 문제임을 짐작 할 수 있었다. nginx 문서 에서 client_max_body_size 항목을 찾아보면, 기본값이 1MB 라고 한다. If the size in a request exceeds the configured value, the 413 (Request Entity Too Large) error is ret..

Development/Daily Error 2023.12.19
[Java] Base64 디코딩 중 Illegal base64 character a 에러 해결

문제 Java에서 Base64 디코딩을 시도하는 과정에서 java.lang.IllegalArgumentException: Illegal base64 character a 오류가 발생했다. 이 오류는 Base64 문자열에 유효하지 않은 문자가 포함되어 있음을 나타내는 건데, charater a 라는 에러메시지때문에 괜히 헤맸기 때문에 이 글을 남긴다. Base64 인코딩은 일반적으로 A-Z, a-z, 0-9, +, / 문자와, 끝에 '=' 패딩 문자를 사용한다. 범위 밖의 문자가 포함되어 있으면 유효하지 않은 Base64 문자열이 되어 예외가 발생하는데, character a 라는 메시지때문에 원인을 찾기가 쉽지 않았다. 원인 일단 결론적으로 원인은 base64 문자열을 복사하는 과정에서 의도치 않은 줄바..

Development/Daily Error 2023.12.02
골치아픈 공공데이터포털 serviceKey 인코딩 문제

Intro 처음 겪는 일은 아니지만 공공 데이터 포털 API를 쓸 때마다 고생을 해서 이번에 글로 정리해두려고 한다. 공공 데이터포털은 각 공공기관이 보유하고 있는 여러가지 다양한 공공 데이터들을 하나의 통합 창구에서 편리하게 사용할 수 있도록 만들어진, 정부에서 운영하는 서비스다. 제공하는 정보가 정말 다양하고 여러가지 유용한 정보가 있으며 무료로 사용할 수 있기 때문에 개발자라면 한번쯤은 사용 해 보았을 것이다. 아래 보이는 것 처럼, 공공 데이터 포털에서는 개인 API 인증키를 Encode / Decode 된 두가지 버전으로 제공한다. 여기까지는 좋다. 사용자가 편의에 따라서 URI 인코딩 하지 않고 인코딩 된 키를 바로 복사해서 써도 되고, 그게 아니면 Decode 된 키를 가지고 각자 알아서 요..

Development/Daily Error 2023.05.28