| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
- java
- cmd
- integer
- API
- ibatis
- 스레드
- oracle
- 프로세스
- MySQL
- START WITH
- wsdl
- JDBC
- http
- 영상편집
- equals
- MariaDB
- Database
- letterspacing
- 삼성증권
- 키보드
- Docker
- Tomcat
- 스레드 덤프
- 안드로이드 스튜디오
- 컨트롤러
- Linux
- HTML
- 티스토리챌린지
- 톰캣
- 오블완
- Today
- Total
블로그 이름
[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:30run.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 변경하여 해결 완료.