2017-02-13 12 views
1

Я использую Spring Boot, Spring MVC и Spring Web с HttpClient. При попытке создать HttpClient объект в классе @Configuration я получаю исключение для следующего кода:вызвано: java.lang.NoSuchMethodError: org.apache.http.conn.ssl.SSLConnectionSocketFactory

SSLConnectionSocketFactory sslSocketFactory = new SSLConnectionSocketFactory(sslContext, hostnameVerifier); 
    Registry<ConnectionSocketFactory> socketFactoryRegistry = RegistryBuilder.<ConnectionSocketFactory>create() 
      .register("http", PlainConnectionSocketFactory.getSocketFactory()) 
      .register("https", sslSocketFactory) 
      .build(); 

POM зависимостей

<properties> 
    <http.client>4.5.2</http.client> 
    <http.core>4.4.4</http.core> 
</<properties> 
<dependency> 
      <groupId>org.apache.httpcomponents</groupId> 
      <artifactId>httpcore</artifactId> 
      <version>${http.core}</version> 
     </dependency> 
<dependency> 
      <groupId>org.apache.httpcomponents</groupId> 
      <artifactId>httpclient</artifactId> 
      <version>${http.client}</version> 
     </dependency> 

Исключение:

Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.apache.http.client.HttpClient]: Factory method 'getHttpClient' thr 
ew exception; nested exception is java.lang.NoSuchMethodError: org.apache.http.conn.ssl.SSLConnectionSocketFactory.<init>(Ljavax/net/ssl/SSLContext;Ljavax/net 
/ssl/HostnameVerifier;)V                                  
     at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:189)        
     at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:588)       
     ... 155 more                                   
Caused by: java.lang.NoSuchMethodError: org.apache.http.conn.ssl.SSLConnectionSocketFactory.<init>(Ljavax/net/ssl/SSLContext;Ljavax/net/ssl/HostnameVerifier;) 
V                                        
     at wsclient.RestClientConfig.getHttpClient(RestClientConfig.java:182)               
     at wsclient.RestClientConfig$$EnhancerBySpringCGLIB$$d3a9da1b.CGLIB$getHttpClient$2(<generated>)        
     at wsclient.RestClientConfig$$EnhancerBySpringCGLIB$$d3a9da1b$$FastClassBySpringCGLIB$$a56984ae.invoke(<generated>)   
     at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228)                  
     at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:309)    
     at wsclient.RestClientConfig$$EnhancerBySpringCGLIB$$d3a9da1b.getHttpClient(<generated>)          
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)                       
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)                  
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)                
     at java.lang.reflect.Method.invoke(Method.java:497)                         
     at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:162)        
     ... 156 more 

Любая помощь или предложения оценивается

ответ

0

Удалите явную зависимость httpcore (она будет включена в состав httpclient) и сделает mvn clean install. Если проблема не устранена, покажите свой полный POM, поскольку у вас может быть конфликтная версия httpclient, установленная с чем-то еще.

+0

Благодарим за ответ. Я попробовал это, но теперь я получаю исключение 'Caused by: java.lang.ClassNotFoundException: org.apache.http.ssl.TrustStrategy at org.apache.catalina.loader.WebappClassLoaderBase.loadClass (WebappClassLoaderBase.java:1305) в org.apache.catalina.loader.WebappClassLoaderBase.loadClass (WebappClassLoaderBase.java:1157) ... 49 more' Я проверил другие места, они предложили использовать ' org.apache.httpcomponents httpcore 4.4 'не работает –