not a subtype of implementation type interface org.apache.http.NameValuePair

一个项目中需要整合Elasticsearch Java API 以及Jenkins Java API。整个是整合了,最后发现调用的时候Elasticsearch API 调用 后端接口报错。

报错:Invalid receiver type interface org.apache.http.Header; not a subtype of implementation type interface org.apache.http.NameValuePair。

引入的pom依赖:

    
        
            org.elasticsearch
            elasticsearch
            7.3.1
        
        
            org.elasticsearch.client
            elasticsearch-rest-high-level-client
            7.3.1
        
        
         
       
            com.offbytwo.jenkins
            jenkins-client
            0.3.8
        
        
            org.apache.httpcomponents
            httpcore
            4.3.3
        
        
            org.apache.httpcomponents
            httpclient
            4.3.6
        

这个时候调用Elasticsearch API报错如下:

not a subtype of implementation type interface org.apache.http.NameValuePair_第1张图片

上网查看说是httpclient依赖版本与elasticsearch依赖所依赖的httpclient版本冲突。

解决办法:

打开IDEA,查看Maven依赖

not a subtype of implementation type interface org.apache.http.NameValuePair_第2张图片

我们发现引入的httpclient依赖是与jenkins所依赖的httpclient版本相同的。再查看elasticsearch-rest-high-level-client所依赖的httpclient,结果如下:

not a subtype of implementation type interface org.apache.http.NameValuePair_第3张图片

我们看到elasticsearch-rest-high-level-client需要的httpclient依赖版本要求更高,为4.5.8。

调整elasticsearch-rest-high-level-client的版本以及httpclient的版本,使得es以及jenkins API Client所依赖的httpclient兼容

因为jenkins-client的版本最高0.3.8,不能再升,所以选择降es-client版本。

httpclient版本过高jenkins-client会报错:

not a subtype of implementation type interface org.apache.http.NameValuePair_第4张图片

所以要降低elasticsearch-rest-high-level-client版本到适当程度,使得httpclient版本适中,两者所依赖的httpclient兼容。

文章验证httpclient4.5.2的版本,发现jenkins-client能够正常工作。查看elasticsearch-rest-high-level-client与httpclient的兼容版本对应发现,elasticsearch-rest-high-level-client的6.8.23所依赖的httpclient为4.5.2。所以依赖修改如下:

        
        
        
            org.elasticsearch
            elasticsearch
            6.8.23
        
        
            org.elasticsearch.client
            elasticsearch-rest-high-level-client
            6.8.23
        
        
        
            com.offbytwo.jenkins
            jenkins-client
            0.3.8
        
        
            org.apache.httpcomponents
            httpcore
            4.4.15
        
        
            org.apache.httpcomponents
            httpclient
            4.5.2
        

两者得以兼容,问题解决。

你可能感兴趣的:(apache,java,elasticsearch,jenkins,spring,boot,spring,maven)