블로그 이름

[ERROR] Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory 본문

개발/오류

[ERROR] Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory

Hide 2025. 8. 31. 16:30

run.bat (실행파일) 을 실행하여 java -jar test.jar 로 프로그램 실행 시, 

Exception in thread "main" java.lang.noclassdeffounderror org/sl4j/loggerfactory 라는 오류가 발생했다.

 

SLF4J 관련 클래스(org.slf4j.LoggerFactory) 를 찾을 수 없어 실행이 중단되었다는 뜻이다.

 

라이브러리는 교체된 이력이 없고 원래 잘 실행되던 프로그램이 갑자기 실행되지 않는 것

 

해결 방법을 찾아보니 2가지 방법이 있다.

 

1. SLF4J 라이브러리를 포함하기

 > .jar 파일을 클래스패스에 추가해야 한다는데, 해당 부분엔 문제 없었다.

2. 실행 명령 수정

 > java -cp "test.jar;slf4j-api-버전.jar;slf4j-simple-버전.jar" MainClassName(메인클래스이름)

으로 수정하여 실행하는 방법이 있다고 한다.

 

두 가지 방법 모두 실패하였고 해결 방법을 생각해보던 중, 원래 실행 되었던 프로그램인데 안되는거라면 뭔가가 바뀌어서 그럴 수 있겠다 생각해서 JAVA 버전을 확인해봤다.

 

확인해보니 기존엔 JAVA 버전을 1.8로 사용하고 있었는데 17로 변경되어 있었다.


"C:\Program Files\Java\jdk1.8.0_271\bin\java.exe"
 -jar test.jar 

 

JAVA 버전 설정하여 실행 시 문제 없이 실행되는 것을 확인하였다.

 

JAVA8, JAVA11에서는 돌아가나 17,21에서는 돌아가지 않을 수 있다는 것을 확인

 

@echo off REM Java 8

set JAVA8_HOME="C:\Program Files\Java\jdk1.8.0_271"

%JAVA8_HOME%\bin\java.exe -jar test.jar\

 

위와 같이 run.bat 변경하여 해결 완료.