나는 메이븐 프로젝트에서 Spark Framework와 함께 필요한 모든 의존성을 포함하는 jar 파일로 제공되는 IMPINJ Octane SDK Java를 사용하려고합니다. Spark Framework를 포함하기 위해 나는 maven을 사용했고 옥탄 SDK jar가 빌드 경로에 추가되었습니다. 내 pom.xml에는 스파크 종속성 만 있습니다.메이븐 종속성 + 로컬 jar 빌드 경로 = slf4j 충돌
<dependency>
<groupId>com.sparkjava</groupId>
<artifactId>spark-core</artifactId>
<version>2.5</version>
</dependency>
프로그램을 실행할 때마다 다음 오류가 발생합니다.
Exception in thread "Thread-1" java.lang.NoSuchMethodError: org.slf4j.helpers.MessageFormatter.arrayFormat(Ljava/lang/String;[Ljava/lang/Object;)Lorg/slf4j/helpers/FormattingTuple;
at org.eclipse.jetty.util.log.JettyAwareLogger.log(JettyAwareLogger.java:619)
at org.eclipse.jetty.util.log.JettyAwareLogger.info(JettyAwareLogger.java:314)
at org.eclipse.jetty.util.log.Slf4jLog.info(Slf4jLog.java:74)
at org.eclipse.jetty.util.log.Log.initialized(Log.java:186)
at org.eclipse.jetty.util.log.Log.getLogger(Log.java:298)
at org.eclipse.jetty.util.log.Log.getLogger(Log.java:288)
at org.eclipse.jetty.util.component.AbstractLifeCycle.<clinit>(AbstractLifeCycle.java:35)
at spark.embeddedserver.jetty.EmbeddedJettyFactory.create(EmbeddedJettyFactory.java:34)
at spark.embeddedserver.EmbeddedServers.create(EmbeddedServers.java:57)
at spark.Service.lambda$init$0(Service.java:342)
at java.lang.Thread.run(Thread.java:745)
옥탄 SDK는 SLF4J 함께 제공하고 스파크 프레임 워크는 종속성으로 SLF4J했지만 서로 다른 버전이 있습니다. 다음 스레드를 발견했습니다 NoSuchMethodError with SLF4J API하지만 jar 파일에서 slf4j를 제거 할 수 있으므로 문제를 해결할 수 없습니다. 이 기능을 어떻게 작동시킬 수 있습니까?
나는 또한 치어에 SLF4J를 제외하는 시도했지만 중 하나가 작동하지 않았다 :
<dependency>
<groupId>com.sparkjava</groupId>
<artifactId>spark-core</artifactId>
<version>2.5</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</exclusion>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
</exclusions>
</dependency>
EDIT (솔루션) : 나는 옥탄 SDK 항아리, 제거 SLF4J를 추출 항아리로 다시 압축 .
[정보] \ - com.sparkjava : spark-core : jar : 2.5 : 컴파일 [정보] \ - org.slf4j : slf4j-api : jar : 1.7.13 : 컴파일 '이것은 출력입니다. 옥탄 SDK Jar 파일을 추출하고 slf4j 1.5.0을 찾았습니다. – mactron
oh ... 제가 옥탄은 클래스 패스에 의존성으로 추가되지 않았습니다. 그리고 그것은 자신의 항아리와 함께 제공됩니다 ... 그래서 당신의 문제/솔루션은 오히려 런타임에 빌드 시간이 아니라 .. – alexbt
내 새로운 이해와 내 대답을 업데이 트 :) – alexbt