2015-07-01 47 views
0

我已经实现了http客户端与我使用Apache CXF实现的其余服务器进行通信。当我在浏览器中使用url时,evrything很好,但是当我使用客户端时,我得到了一个异常。唯一的例外是实现一个客户端来调用Rest Web服务

Exception in thread "main" java.lang.NoSuchMethodError: org.slf4j.spi.LocationAwareLogger.log(Lorg/slf4j/Marker;Ljava/lang/String;ILjava/lang/String;Ljava/lang/Throwable;)V at org.apache.commons.logging.impl.SLF4JLocationAwareLog.debug(SLF4JLocationAwareLog.java:99) at org.apache.http.client.protocol.RequestAuthCache.process(RequestAuthCache.java:75) at org.apache.http.protocol.ImmutableHttpProcessor.process(ImmutableHttpProcessor.java:131) at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:193) at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:85) at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:108) at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:186) at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82) at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:106) at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:57) at ABC.XYZ(ABC.java:45) at ABC.XYZ(ABC.java:93)

我已经写了下面的代码在我的客户端

HttpClient client = HttpClientBuilder.create().build(); 
    HttpGet getRequest = new HttpGet(path); 
    getRequest.addHeader("accept", "application/xml"); 
    HttpResponse response = client.execute(getRequest);//here I have an exception 
+0

您如何运行客户端代码?看起来您的类路径中有多个相互冲突的SLF4J版本。如果您发布了某人可能帮助的类路径,但目前没有足够的信息来回答您的问题 –

+0

作为主类 – Jerry

+0

问题在于您的类路径 - 您如何调用主类 - 通过命令行中的java,通过IDE等Eclipse,通过Ant?/Maven?/Gradle? –

回答

0

我建议你使用Maven和添加的Apache HTTP客户端的依赖。可能是存在导致问题的slf4j.jar的不兼容版本。 maven将能够处理兼容版本。

0

我认为这个请求在某种程度上是不同的,对于第二个需要记录器。您应该正确添加对slf4j的依赖关系并查看错误