gpt4 book ai didi

java - maven 依赖项 + 构建路径中的本地 jar = slf4j 冲突

转载 作者:太空宇宙 更新时间:2023-11-04 12:28:33 29 4
gpt4 key购买 nike

我尝试使用 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 Framework 也有 slf4j 作为依赖项,但它们有不同的版本。我发现以下线程 NoSuchMethodError with SLF4J API但由于我可以从 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。

最佳答案

我的理解是sparks需要slf4j 1.7.13。然后,将 Octane 添加到类路径(不是通过 Maven 依赖项),并且此 Octane jar 包含 slf4j 的旧类。

我刚刚下载了 Octane 来亲自看看。我注意到它包括 2 个版本:

  • OctaneSDKJava-1.22.0.30.jar
  • OctaneSDKJava-1.22.0.30-jar-with-dependency.jar

您需要使用 OctaneSDKJava-1.22.0.30.jar 并手动包含所有其他依赖项,但不包含 slf4j 依赖项(或相反,使用 OctaneSDKJava-1.22.0.30-jar-with-dependency.jar 并删除 slf4j)。

<小时/>

编辑回答评论中的问题:

我打开了最新的 OctaneSDKJava-1.26.2.0-jar-with-dependency.zip,其中包含包含以下详细信息的 README.txt:

DEPENDENCIES

RUNTIME DEPENDENCIES

COMPILE DEPENDENCIES

JAXB RI dependencies including:

The five above jaxb dependencies are available in a single jar "JAXB RI" from https://jaxb.dev.java.net/. Execute this jar (doubleclick windows, "java -jar " all other platforms) and copy the individual jars to the LTKJava/lib directory) plus above runtime dependencies

TEST DEPENDENCIES

关于java - maven 依赖项 + 构建路径中的本地 jar = slf4j 冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38128115/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com