[ERROR] Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
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 변경하여 해결 완료.