2016-11-24 19 views
-1

나는 Spring과 Apache HTTPComponents를 사용하여 간단한 자바 HTTP 클라이언트 애플리케이션을 작성했다.HttpClient에 httpasyncclient가 필요한 이유는 무엇입니까?

java.lang.NoClassDefFoundError: org/apache/http/nio/client/HttpAsyncClient 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
    at my.package.<init>(MyClientTest.java:60) 

이 줄의 코드는 다음과 같습니다 :

<dependency> 
     <groupId>org.apache.httpcomponents</groupId> 
     <artifactId>httpasyncclient</artifactId> 
     <version>4.1.2</version> 
     <scope>test</scope> 
    </dependency> 
:

private final RestTemplate restTemplate = 
    new RestTemplate(new HttpComponentsAsyncClientHttpRequestFactory()); 

내 빌드에 종속성을 추가하여 치료할 수있는 내가 그것을 실행하면 예외와 함께 실패

하지만 왜 이것을해야합니까? 나는 명시 적으로 비동기 적으로 아무것도하지 않는다. 메이븐이 필요한 의존성을 자동적으로 가져 오기로되어 있다고 생각했습니다. 실수로 비동기 요청 공장을 요청하지 않은

+0

@KlausGroenbaek 기업 코더로서, 나는 그 문제에 대해 거의 선택의 여지가 없다. 그러나 그것은 우리에게 큰 문제를 일으키지 않습니다. – slim

+0

폐원 투표자에게 - 나는이 문제를 찾기 위해 반나절을 보냈기 때문에이 Q & A를 추가했으며, SO가 대답하기를 바랬다. 꽤 많은 사람들이이 특정 클래스에 대해 비슷한 질문을 던졌고 클래스 패스에서 비동기 항아리를 가져와야한다는 대답을 얻었습니다. 나는 그들이 대부분 그것을 필요로하지 않는다고 생각한다. – slim

+0

전체 스택 추적을 게시 할 수 있습니까?이 문제가 발생하면 어떤 클래스를로드하고 있습니까? –

답변

-1

확인 - 예를 들면 : 나는이 발생

private final RestTemplate restTemplate = 
    new RestTemplate(new HttpComponentsAsyncClientHttpRequestFactory()); 

, IDE 자동 완성 나에게 HttpComponentsAsyncClientHttpRequestFactory를 준 - 아마도이 알파벳 순으로 HttpComponentsClientHttpRequestFactory 전에 오기 때문에, 나는 그곳에는 Async이 집어 넣을 정도로 조심스럽게 보지 못했습니다.

HttpComponentsAsyncClientHttpRequestFactory은 Spring의 일부이며 Apache의 HttpAsyncClient에 런타임 종속성이 있습니다.

대신 HttpComponentsClientHttpRequestFactory을 사용하면 httpasyncclient 항아리가 필요하지 않습니다.