본문 바로가기

날리지/언어

[에러잡기]java.lang.NoSuchMethodError: org.slf4j.spi.LocationAwareLogger.log 에러 해결 법

1.  class path 에 multiple bindings 이 있을 경우 잡아준다.

mvn dependency:tree를 pom.xml있는 디렉토리에서 실행하여 의존성 검사를 한다. 중복되는 것은 exclude함

2. step1을 해결하고, 서버 시작하면 콘솔에서 multiple bindings 에러가 사라질 것이다. 그러나 java.lang.NoSuchMethodError: org.slf4j.spi.LocationAwareLogger.log 이 에러는 여전히 존재한다.

그러면 클래스 패스에 slf4j 라이브러리를 찾아주지 못하는 이유 때문이다.

간단하게 버전에 맞게 slf4j-log4j12, slf4j-api, jcl-over-slf4j  이 세 개의 라이브러리를 추가 해주자. (# 이 세개 중 하나라도 빠지면 안된다. )

나와 같은 경우는 아래와 같이 설정하였다.

		<!-- log4j -->
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-log4j12</artifactId>
			<version>1.5.8</version>
		</dependency>
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-api</artifactId>
			<version>1.5.8</version>
		</dependency>
		<dependency>
		   <groupId>org.slf4j</groupId>
		   <artifactId>jcl-over-slf4j</artifactId>
		   <version>1.5.8</version>
		</dependency>

 

버전은 자기의 시스템에서 사용하는 라이브러리들이 요구하는 버전에 맞게 사용하면 될 것이다.

이 에러 때문에 하루 시간을 꼴딱 날렸다. 생각 외로 이 에러에 대한 설명이 그다지 친절하지 못하다.

영어, 중국어 사이트 다 뒤져 봤지만, 깔끔하게 설명해주는 곳이 없었다.

마지막에 참고한 블로그 게시물도 완벽하지는 않지마는 내 에러를 해결하는데 insight를 주었음으로 reference를 남긴다.

참조:) https://blog.naver.com/pmc58/220000337525

 

org.slf4j.spi.LocationAwareLogger.log(Lorg/slf4j/Marker;Ljava/lang/String;ILjava/lang/String;Ljava/lang/Throwable;)V

심각: Exception sending context initialized event to listener instance of class org.springframework...

blog.naver.com