【问题标题】:Dependency on slf4j causes ClassLoader conflict对slf4j的依赖导致ClassLoader冲突
【发布时间】:2018-04-01 00:03:23
【问题描述】:

我正在开发 jira 插件。当我尝试部署它时,我收到一个错误:

在 URL [bundle://205.0:1/com/softwareplant/tool/service/UserService.class] 中创建名称为“userService”的 bean 时出错:通过构造函数实例化 bean 失败;嵌套异常是 java.lang.LinkageError:加载程序约束违规:解析方法“org.slf4j.impl.StaticLoggerBinder.getLoggerFactory()Lorg/slf4j/ILoggerFactory;”时当前类 org/slf4j/LoggerFactory 的类加载器(org/apache/felix/framework/BundleWiringImpl$BundleClassLoaderJava5 的实例)和方法定义的类加载器(org/apache/catalina/loader/WebappClassLoader 的实例)类,org/slf4j/impl/StaticLoggerBinder,对于签名中使用的类型 org/slf4j/ILoggerFactory 有不同的 Class 对象;嵌套异常是 org.springframework.beans.factory.BeanCreationException:

在项目中我使用了这样的依赖:

[0;37m[INFO] +- com.atlassian.jira:jira-core:jar:7.0.0:provided[0m
[0;37m[INFO] |  +- org.slf4j:slf4j-log4j12:jar:1.7.9:provided[0m
[0;37m[INFO] |  +- org.slf4j:jul-to-slf4j:jar:1.7.9:provided[0m
[0;37m[INFO] |  +- org.slf4j:jcl-over-slf4j:jar:1.7.9:provided[0m
[0;37m[INFO] +- org.slf4j:slf4j-api:jar:1.7.25:compile[0m

希望您有解决方法的想法。谢谢你的帮助! 感谢您的帮助!

【问题讨论】:

  • 如果org.slf4j:slf4j-log4j12:jar:1.7.9 是“提供”的,那么org.slf4j:slf4j-api:jar:1.7.9 很可能也是“提供”的,所以不要将org.slf4j:slf4j-api:jar:1.7.25 包含为“编译”依赖项。

标签: java maven jira classloader slf4j


【解决方案1】:

如果您有同一个库的 2 个不同版本,有时会发生这种情况,请尝试清理项目并再次运行。

【讨论】:

  • 确实,我项目的一个依赖项无意中覆盖了org.slf4j:slf4j-api,导致java.lang.LinkageError: loader constraint violation: when resolving method "org.slf4j.impl.StaticLoggerBinder.getLoggerFactory()Lorg/slf4j/ILoggerFactory;"。 Maven 排除成功了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-04-23
  • 2021-09-03
  • 2012-07-05
  • 1970-01-01
  • 1970-01-01
  • 2011-03-12
  • 2019-12-24
相关资源
最近更新 更多