【问题标题】:How can I prevent war libraries slf4j to collide with my project slf4j?如何防止战争库 slf4j 与我的项目 slf4j 发生冲突?
【发布时间】:2019-12-01 06:33:29
【问题描述】:

我正在尝试将 reddog rdap-server war 文件部署到我项目中的嵌入式 Jetty 中。但每次我得到这个错误:

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

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

我试图将我的 maven pom 更改为“provider”,但没有帮助。

【问题讨论】:

    标签: jetty war slf4j


    【解决方案1】:

    使用 WebAppContext(从您的错误和 WebAppClassLoader 的提及中可以看出)。

    不要修改 WebAppContext 或 WebAppClassLoader 上的服务器或系统类列表。

    不要设置 WebAppContext.setParentLoaderPriority(boolean) 字段。

    就是这样。

    现在您有了您正在寻找的 ClassLoader Isolation。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-21
      • 1970-01-01
      • 1970-01-01
      • 2023-03-21
      • 1970-01-01
      • 2015-05-13
      • 2019-04-19
      • 1970-01-01
      相关资源
      最近更新 更多