初始化OpenSaml时java.lang.NoSuchMethodError:org.slf4j.helpers.Util.report(Ljava/lang/String;)V

初始化OpenSaml时java.lang.NoSuchMethodError:org.slf4j.helpers.Util.report(Ljava/lang/String;)V,java,slf4j,nosuchmethoderror,opensaml,Java,Slf4j,Nosuchmethoderror,Opensaml,我在maven项目中使用OpenSaml。当我尝试使用DefaultBootstrap类的变体初始化OpenSaml时,我得到以下stacktrace: java.lang.NoSuchMethodError: org.slf4j.helpers.Util.report(Ljava/lang/String;)V org.apache.log4j.Log4jLoggerFactory.<clinit>(Log4jLoggerFactory.java:47) or

我在maven项目中使用OpenSaml。当我尝试使用DefaultBootstrap类的变体初始化OpenSaml时,我得到以下stacktrace:

    java.lang.NoSuchMethodError: org.slf4j.helpers.Util.report(Ljava/lang/String;)V
    org.apache.log4j.Log4jLoggerFactory.<clinit>(Log4jLoggerFactory.java:47)
    org.apache.log4j.LogManager.getLogger(LogManager.java:42)
    org.slf4j.impl.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:73)
    org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:103)
    org.opensaml.xml.XMLConfigurator.<init>(XMLConfigurator.java:56)
    org.opensaml.xml.XMLConfigurator.<init>(XMLConfigurator.java:73)

我试着用mvn-dependency:tree来找出SLF4J-jar的不匹配版本是从哪里加载的。我还尝试在mvn.bat中将-verbose选项传递给Java。这两种选择都没有帮助。我已尝试逐个删除pom.xml中的依赖项。再说一次,运气不好。如果有人能告诉我们如何找到罪犯或者如何解决这个错误,我会很感激。

我打赌你的类路径中有slf4j-api.jar版本1.5.0或更早,而log4j-over-slf4j.jar版本有更高版本。

我打赌你的类路径中有slf4j-api.jar版本1.5.0或更早,而log4j-over-slf4j.jar版本有更高版本。

我得到了答案类似的问题。经过大量的探索和调试,我发现log4j库不兼容。我的定制构建jar具有需要log4j-1.2.12或更高版本的hbase异步客户端

我也遇到了类似的问题。经过大量的探索和调试,我发现log4j库不兼容。我的定制构建jar具有需要log4j-1.2.12或更高版本的hbase异步客户端

您能用slf4j/log4j依赖项粘贴pom的一部分吗?你检查过slf4j了吗?你能用slf4j/log4j依赖项粘贴pom的一部分吗?你检查过slf4j了吗?你完全正确。我的一个定制jar正在加载SLF4JAPI版本1.5.0 jar。OpenSaml加载了4个版本为1.6.0的slf4j JAR。当我试图从我的定制jar中排除1.5.0 slf4j jar时,我遇到了更多的问题。我需要做更多的研究来了解这些问题是什么。然而,一旦我从OpenSaml中排除了1.6.0SLF4J JAR,事情就开始顺利进行了。mvn依赖关系:树帮助我更好地理解了这个问题。感谢您花时间发表评论。请勿排除。相反,使用maven的邻近规则来解析工件。当前项目中声明的依赖项覆盖了其他组件(即依赖项的pom.xml文件)所做的声明。您完全正确。我的一个定制jar正在加载SLF4JAPI版本1.5.0 jar。OpenSaml加载了4个版本为1.6.0的slf4j JAR。当我试图从我的定制jar中排除1.5.0 slf4j jar时,我遇到了更多的问题。我需要做更多的研究来了解这些问题是什么。然而,一旦我从OpenSaml中排除了1.6.0SLF4J JAR,事情就开始顺利进行了。mvn依赖关系:树帮助我更好地理解了这个问题。感谢您花时间发表评论。请勿排除。相反,使用maven的邻近规则来解析工件。当前项目中声明的依赖项覆盖了其他组件(即依赖项的pom.xml文件)所做的声明。