当前位置: 首页 > 知识库问答 >
问题:

如何防止war库slf4j与我的项目slf4j冲突?

闾丘京
2023-03-14

我正在尝试将reddog rdap服务器war文件部署到项目中的嵌入式Jetty中。但每次我得到这个爱神:

JAVAlang.LinkageError:加载程序约束冲突:解析方法“org.slf4j.impl.StaticLoggerBinder.getLoggerFactory()Lorg/slf4j/ILoggerFactory;”当前类org/slf4j/LoggerFactory的类加载器(org/eclipse/jetty/webapp/WebAppClassLoader实例)和方法的定义类org/slf4j/impl/StaticLoggerBinder的类加载器(sun/misc/Launcher$AppClassLoader实例)对于签名中使用的org/slf4j/ILoggerFactory类型具有不同的类对象

问题是,war文件已经包含slf4j。有什么建议吗?

我试图把我的maven pom改成“提供者”,但没有用。

共有1个答案

南宫奇思
2023-03-14

使用WebAppContext(从您的错误和WebAppClassLoader的提及来看,似乎是这样)。

不要修改WebAppContext或WebAppClassLoader上的Server或System类列表。

不要设置WebAppContext。setParentLoaderPriority(布尔)字段。

就这样。

现在你有了你想要的类加载器隔离。

 类似资料:
  • 我在maven项目中使用了SLF4J和log4j。当我在eclipse中用tomcat运行项目时,一切都正常,在maven中使用tomcat maven插件运行项目时。 但是当我把战争穿上我的tomcat正式服时,项目没有开始,给了我这个错误。 JAVAlang.IllegalStateException:检测到log4j-over-slf4j。jar和绑定slf4j-log4j12。类路径上的j

  • 我正在为我的应用程序部署一个spring boot可执行jar。我使用SLF4J日志记录,当我在IntelliJ内部构建和运行时,我没有任何问题。 然而,当我尝试运行.jar时,从命令行我得到一个LoggerFactory不是Logback LoggerContext,而是Logback在类路径异常上。 它在两个地方抱怨slf4j-log4j12-1.7.12.jar。 如果我从这两个位置移除ja

  • 主要内容:SLF4J 与 Log4j 的区别,为什么 SLF4J 优于 Log4J?SLF4J 与 Log4j 的区别 SLF4J(Simple Logging Façade for java)是一个 API,旨在提供对许多日志框架的通用访问,log4j 就是其中之一。 它基本上是一个抽象层。它不是日志记录实现。这意味着如果您正在编写一个库并且您使用 SLF4J,您可以将该库提供给其他人使用,他们可以选择与 SLF4J 一起使用的日志记录实现,例如 log4j 或 Java 日志

  • 当我运行flyway maven插件时,它首先下载版本为1.5.6的slf4j jars: 这严重破坏了我的Spring web应用程序,因为我在那里使用的是slf4j的1.7.2版本,当我重新启动它时,它变得混乱。 我该如何防止这种情况?我尝试过在我的pom中添加排除项.xml: 但这仍然会发生。 更新:这导致的是以下错误,当我使用Intellij 12进行构建时: 更新:mvn依赖项的输出:t

  • 我正试图用slf4j log4j建立一个项目,但这该死的东西就是不起作用。。。我不断得到例外: 我查了一下,班级org.apache.log4j。级别是在我的项目下"Maven依赖 我已经尝试了以下选项: slf4j api log4j slf4j api slf4j-log4j12 slf4j api log4j slf4j api slf4j-log4j12 log4j 这些选项都不起作用:(

  • 所以我正在编写简单的Spring Boot(1.56版)应用程序。并开始使用lombok项目,specifically@Slf4j用于记录的功能。日志记录工作正常,但如何配置此日志记录程序?准确地说,我希望能够使用外部文件更改日志记录级别。