欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

Exception in thread "main" java.lang.NoSuchMethodError: org.slf4j.spi.LocationAwareLogger.log(Lorg/slf4j/Marker,,在项目中遇到了下面的错误

来源: javaer 分享于  点击 842 次 点评:126

Exception in thread "main" java.lang.NoSuchMethodError: org.slf4j.spi.LocationAwareLogger.log(Lorg/slf4j/Marker,,在项目中遇到了下面的错误


在项目中遇到了下面的错误,方法未定义,异常信息如下

jar:file:/C:/Users/Administrator/.m2/repository/com/salesforce/phoenix-client/2.2.2/phoenix-client-2.2.2.jar!/org/slf4j/spi/LocationAwareLogger.classException in thread "main" java.lang.NoSuchMethodError: org.slf4j.spi.LocationAwareLogger.log(Lorg/slf4j/Marker;Ljava/lang/String;ILjava/lang/String;[Ljava/lang/Object;Ljava/lang/Throwable;)V    at org.apache.commons.logging.impl.SLF4JLocationAwareLog.debug(SLF4JLocationAwareLog.java:133)    at org.springframework.core.env.AbstractEnvironment.<init>(AbstractEnvironment.java:114)    at org.springframework.core.env.StandardEnvironment.<init>(StandardEnvironment.java:54)    at org.springframework.context.support.AbstractApplicationContext.createEnvironment(AbstractApplicationContext.java:427)    at org.springframework.context.support.AbstractApplicationContext.<init>(AbstractApplicationContext.java:227)    at org.springframework.context.support.AbstractRefreshableApplicationContext.<init>(AbstractRefreshableApplicationContext.java:90)    at org.springframework.context.support.AbstractRefreshableConfigApplicationContext.<init>(AbstractRefreshableConfigApplicationContext.java:59)    at org.springframework.context.support.AbstractXmlApplicationContext.<init>(AbstractXmlApplicationContext.java:61)    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:136)    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)

这是一个jar包冲突的问题,项目中引用了一个变态的jar包,这个jar包打了许多第三方包在里面,导致了冲突。

可以通过下面的方法确认冲突发生在那个包中:

URL urlOfClass = App.class.getClassLoader().getResource("org/slf4j/spi/LocationAwareLogger.class");        System.out.println(urlOfClass);

这个输出中会有具体的jar包。找到冲突的jar包之后可以有两种方法来解决问题。

通过修改jar包的内容,删除不必要的第三方包,这有一定风险,但可行将这个冲突包放在引用的最后位置,这样,他的第三方包就永远不会被用到,除非项目中没有他的第三方包
相关栏目:

用户点评