반응형

Java 10

AbstractMethodError - SLF4J JDK14LoggerAdapter 충돌 원인 및 해결 방법

에러 메시지Caused by: java.lang.AbstractMethodError: org.slf4j.impl.JDK14LoggerAdapter.log(Lorg/slf4j/Marker;Ljava/lang/String;ILjava/lang/String;[Ljava/lang/Object;Ljava/lang/Throwable;)V원인 분석1. AbstractMethodError란?클래스는 존재하지만 호출하려는 메서드가 구현되어 있지 않을 때 발생컴파일 시점에는 존재했지만, 실행 시점에는 해당 메서드가 없는 경우2. 원인 클래스: JDK14LoggerAdapterSLF4J에서 java.util.logging (JUL)을 사용하는 구현체slf4j-api는 새로운 인터페이스 (log(Marker, ...))를 요..

java.lang.ArrayIndexOutOfBoundsException: 1 – 배열 인덱스 초과 접근 오류

Java에서 가장 자주 발생하는 런타임 오류 중 하나는 배열 인덱스 관련 예외입니다.이번 글에서는 다음과 같은 오류 메시지를 중심으로 원인과 해결책을 정리합니다.에러 메시지java.lang.ArrayIndexOutOfBoundsException: 1원인 분석이 예외는 Java 코드에서 배열(Array) 또는 리스트(List)의 유효 범위를 벗어난 인덱스에 접근하려고 할 때 발생합니다.예시 코드String[] names = new String[1];names[0] = "Kim";System.out.println(names[1]); // → 오류 발생문제 요약위 배열 names의 길이는 1 (인덱스 0만 사용 가능)names[1]에 접근하려고 해서 ArrayIndexOutOfBoundsException: 1..

java.lang.IllegalStateException: Unable to send an error after the response has been committed

웹 애플리케이션에서 예외 상황 발생 시, 다음과 같은 오류 로그를 접한 적이 있을 수 있습니다.에러 메시지java.lang.IllegalStateException: Unable to send an error after the response has been committed원인 분석이 오류는 HTTP 응답(Response)이 이미 클라이언트에 전송(commit)된 이후,서버 쪽에서 다시 response.sendError() 또는 response.setStatus() 등을 호출하려고 할 때 발생합니다.즉, 응답 헤더가 이미 전송된 상태에서는 상태 코드나 에러 페이지 전환이 불가능하기 때문에 발생하는 예외입니다.언제 발생할까?JSP에서 이미 일부 HTML이 브라우저로 전송된 후 예외 발생필터나 인터셉터에서 ..

java.lang.IllegalArgumentException: Class version is supported up to JDK 1.7

JVM 실행 시 다음과 같은 오류가 발생하며 애플리케이션이 정상 기동되지 않는 경우가 있습니다.에러 메시지java.lang.IllegalArgumentException: Class version is supported up to JDK 1.7원인 분석이 에러는 클래스 파일(.class)의 버전이 현재 실행 중인 JVM이 인식할 수 있는 범위를 초과했을 때 발생합니다.즉,컴파일된 클래스 파일이 더 최신 JDK로 빌드되었고,실행 중인 JVM은 그보다 낮은 버전일 때 발생합니다.예를 들어:컴파일 환경 (javac)실행 환경 (java)발생 가능성JDK 11JDK 7✅ 오류 발생JDK 8JDK 8❌ 정상 작동JDK 7JDK 11✅ 정상 작동 (상위 호환)클래스 버전 대응표Class VersionJDK 버전51...

[장애 사례] java.net.SocketException: Too many open files

[장애 사례] java.net.SocketException: Too many open files운영 중인 Java 애플리케이션에서 다음과 같은 오류가 발생할 경우,이는 시스템 또는 사용자별 파일 핸들 수(file descriptor) 제한을 초과했음을 의미합니다.✅ 에러 메시지java.net.SocketException: Too many open files✅ 원인 정리원인 유형설명OS 레벨 제한Linux는 사용자당 열 수 있는 파일 수를 제한함 (ulimit -n)커넥션 누수열었던 소켓/스트림을 닫지 않아 누적과도한 트래픽짧은 시간에 수천 개 이상의 접속 발생파일 I/O로그 파일, 업로드 처리, 캐시 등에서 열린 파일 미반환✅ 진단 방법1. 현재 파일 디스크립터 제한 확인ulimit -n예) 1024 →..

[오류 해결] Unable to get managed connection for java:/jdbc/xxx 에러 원인과 해결 방법

[오류 해결] Unable to get managed connection for java:/jdbc/xxx 에러 원인과 해결 방법Java 웹 애플리케이션에서 DB 연동 시 가장 흔하게 발생하는 장애 중 하나가 JDBC 커넥션 풀 고갈 또는 연결 실패입니다.이번 포스트에서는 WildFly + Oracle 환경에서 발생한 다음과 같은 에러 메시지에 대해 분석하고 해결 방법을 정리합니다.✅ 에러 메시지 요약javax.resource.ResourceException: IJ000453: Unable to get managed connection for java:/jdbc/OracleDSCaused by: java.sql.SQLRecoverableException: IO 오류: Got minus one from a..

Java 클래스 파일 위치 찾기 스크립트 (.class 또는 .jar 내부 포함)

Java 클래스 파일 위치 찾기 스크립트 (.class 또는 .jar 내부 포함)Java 프로젝트에서 특정 클래스가 어디에 존재하는지, 특히 클래스 파일이 폴더 안에 존재하는지 또는 어떤 JAR 파일에 포함되어 있는지 확인해야 할 때가 많습니다.이 스크립트는 다음과 같은 상황에서 유용하게 사용할 수 있습니다:✅ 사용하는 이유특정 클래스가 누락되었는지 확인동일한 클래스가 여러 위치(JAR)에 존재하는지 확인 (의존성 충돌 분석)클래스 로딩 순서를 점검하고 싶을 때배포 패키지(JAR/WAR)에 해당 클래스가 포함되어 있는지 검증✅ 사용법# 스크립트 실행 권한 부여chmod +x find-class.sh# 실행 형식./find-class.sh # 예시./find-class.sh /opt/app com.exa..

리눅스에서 CPU 사용량이 높은 자바 쓰레드(Thread) 찾는 방법

리눅스에서 CPU 사용량이 높은 자바 쓰레드(Thread) 찾는 방법Java 애플리케이션에서 특정 쓰레드가 비정상적으로 CPU를 많이 사용하는 경우, 시스템 전체 성능 저하나 장애로 이어질 수 있습니다. 이 글에서는 리눅스 환경에서 고CPU 쓰레드를 추적하는 절차와 명령어를 설명합니다.1. 전체 흐름 요약top 또는 htop으로 Java 프로세스 확인ps로 PID 상세 조회top -H -p 로 쓰레드별 CPU 사용량 확인printf로 TID(쓰레드 ID)를 16진수로 변환jstack으로 스레드 dump 후 TID 매칭2. Java PID 확인$ jps -lv또는$ ps -ef | grep java3. 쓰레드별 CPU 사용량 확인$ top -H -p PID: Java 프로세스 ID-H: 쓰레드 단위로 보기..

JDK 다운로드 경로와 Java 종류, Oracle 라이선스 정책 정리

JDK 다운로드 경로와 Java 종류, Oracle 라이선스 정책 정리이 글에서는 자바(Java)를 처음 사용하는 개발자부터 실무자까지 알아야 할 JDK 다운로드 방법, Java의 종류, 그리고 Oracle의 라이선스 정책 변화에 대해 정리합니다.1. JDK 다운로드 경로 정리Java는 다양한 벤더(배포사)에서 배포되고 있으며, 대표적인 JDK 배포 경로는 다음과 같습니다:배포사다운로드 링크특징Oracle JDKhttps://www.oracle.com/java/technologies/javase-downloads.html상용, 상업적 사용은 라이선스 주의OpenJDK (공식)https://jdk.java.netOracle이 오픈소스 버전 제공Adoptium (Eclipse Temurin)https://a..

System Settings 2025.05.13

NullPointerException 원인 분석 방법

NullPointerException 원인 분석 방법Java 개발에서 가장 흔히 마주치는 예외 중 하나가 NullPointerException입니다. 이 글에서는 NPE의 발생 원인, 스택 트레이스 분석법, 실전 예시, 예방 및 대응 팁을 정리합니다.1. NullPointerException이란?NullPointerException은 null 값을 참조하여 객체의 메서드나 필드에 접근할 때 발생하는 런타임 예외입니다.예:String name = null;int length = name.length(); // NPE 발생!2. 대표적인 NPE 발생 케이스케이스설명객체가 null인데 메서드 호출obj.method() 형태에서 obj가 nullnull 객체의 필드 접근obj.field배열이 null인데 인덱..

반응형