java.lang.NoSuchMethodError: org.slf4j.spi.LocationAwareLogger.log(Lorg/slf4j/Marker;Ljava/lang/Stri

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.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:401)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:820)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:754)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:732)
at org.apache.solr.client.solrj.impl.HttpSolrServer.request(HttpSolrServer.java:383)
at org.apache.solr.client.solrj.impl.HttpSolrServer.request(HttpSolrServer.java:221)
at org.apache.solr.client.solrj.request.AbstractUpdateRequest.process(AbstractUpdateRequest.java:105)
at org.apache.solr.client.solrj.SolrServer.commit(SolrServer.java:178)
at org.apache.solr.client.solrj.SolrServer.commit(SolrServer.java:154)
at com.sysc.eps.SolrWebService.service.SolrService.addOrUpdateIndexFromDB(SolrService.java:204)
at com.sysc.eps.SolrWebService.service.SolrService.addOrUpdateIndexFromDBByID(SolrService.java:95)
at com.sysc.eps.SolrWebService.test.SolrServiceTest.test(SolrServiceTest.java:20)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:49)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)


该异常之前遇到过,忘记了当时是怎么解决的,这次又查了很长时间,一开始以为是slf4j相关的包有冲突,对以下包都进行了排查:
apache-httpcomponents-httpclient.jar
httpcore-4.1.4.jar
slf4j-api-1.6.1.jar
slf4j-jdk14-1.6.1.jar
slf4j-log4j12-1.6.1.jar
但都没有解决问题。
考虑到公司其他的项目中也用到了上述包,但没有报错,因此对两个项目进行了比对。
发现用到的JAVA EE包版本不同。更改之后果然解决了这个问题。


1、 可以考虑的解决步骤
A、首先,异常信息中提到了LocationAwareLogger这个类。
B、在MyEclipse中搜了一下这个类,发现有两个地方存在该名称的类。
C、一个是sof4j-api-1.6.1.jar,另一个是JAVA EE 6下的bean-validator.jar包。
D、由此可以考虑是这两个包冲突。


2、 解决方案
原本MyEclipse中用到是JAVA EE 6 Libraries,更改为JAVA EE 5 Libraries就好了,原因未明。

你可能感兴趣的:(待删除)