我尝试使用 IMPINJ Octane SDK Java,它作为一个 jar 包含所有需要的依赖项以及一个 maven 项目中的 Spark 框架。为了包含 Spark 框架,我使用 maven 并将 Octane SDK jar 添加到构建路径中。我的 pom.xml 只有 spark 依赖:
<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)
Octane SDK 附带 slf4j,Spark 框架也有 slf4j 作为依赖项,但它们有不同的版本。我使用 SLF4J API找到了以下线程NoSuchMethodError但由于我可以从 jar 中删除 slf4j 我无法解决问题。我怎样才能得到这个工作?
我还尝试在 pom 中排除 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>
编辑(解决方案):我提取了 Octane SDK jar,删除了 slf4j 并将其压缩回 jar。