首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >org.apache.http.impl.io.DefaultHttpRequestWriterFactory上的NoSuchFieldError实例

org.apache.http.impl.io.DefaultHttpRequestWriterFactory上的NoSuchFieldError实例
EN

Stack Overflow用户
提问于 2015-01-13 19:27:08
回答 1查看 21.8K关注 0票数 19
代码语言:javascript
复制
java version "1.7.0_71" 
Gradle 2.1

你好,

代码语言:javascript
复制
UPDATE:

依赖关系

代码语言:javascript
复制
gradle dependencies | grep httpcore
|    +--- org.apache.httpcomponents:httpcore:4.3.3
|    +--- org.apache.httpcomponents:httpcore:4.3.3
|    +--- org.apache.httpcomponents:httpcore:4.3.3
|    +--- org.apache.httpcomponents:httpcore:4.3.3
|    |         |    |         |    +--- org.apache.httpcomponents:httpcore:4.1 -> 4.3.3
|    +--- org.apache.httpcomponents:httpcore:4.3.3
|    |         |    |         |    +--- org.apache.httpcomponents:httpcore:4.1 -> 4.3.3

这是否意味着我的4.1版本是到4.3.3的软链接?似乎很奇怪,因为当我打印出类加载器正在加载的内容时,它似乎加载了4.3.3:/home/steve/.gradle/caches/modules-2/files-2.1/org.apache.httpcomponents/httpcore/4.3.3/f91b7a4aadc5cf486df6e4634748d7dd7a73f06d/httpcore-4.3.3.jar似乎非常奇怪。

当我尝试运行我的httpClient时,我一直收到这个错误。一切都编译正常。

代码语言:javascript
复制
java.lang.NoSuchFieldError: INSTANCE
        at org.apache.http.impl.io.DefaultHttpRequestWriterFactory.<init>(DefaultHttpRequestWriterFactory.java:52

我的代码非常简单,删除了不重要的代码,以保持它很小:

代码语言:javascript
复制
public class GenieClient {
    private CloseableHttpClient mClient;

    public GenieClient() {
        ClassLoader classLoader = GenieClient.class.getClassLoader();
        URL resource = classLoader.getResource("org/apache/http/message/BasicLineFormatter.class");
        log.log(Level.INFO, "resource: " + resource);

        mClient = HttpClientBuilder.create().build();
    }

    public int sendRequest() {   
        int responseCode = -1;

        try {
            HttpResponse response = mClient.execute(new HttpPost("http://www.google.com"));
            responseCode = response.getStatusLine().getStatusCode();
        }
        catch(IOException ex) {
            log.log(Level.SEVERE, "IOException: " + ex.getMessage());
        }

        return responseCode;
    }
}

我从classLoader得到的输出是这样的:

代码语言:javascript
复制
INFO: resource: jar:file:/home/steve/.gradle/caches/modules-2/files-2.1/org.apache.httpcomponents/httpcore/4.3.3/f91b7a4aadc5cf486df6e4634748d7dd7a73f06d/httpcore-4.3.3.jar!/org/apache/http/message/BasicLineFormatter.class

我使用gradle作为构建工具,并在我的build.gradle文件中设置了如下依赖项:

代码语言:javascript
复制
dependencies {
    compile 'org.apache.httpcomponents:httpclient:4.3.6'
}

我还尝试包含以下httpcore,但仍然收到相同的错误:

代码语言:javascript
复制
compile 'org.apache.httpcomponents:httpcore:4.4'

一切正常,只有当我运行我的httpClient的时候,

非常感谢您的建议,

EN

回答 1

Stack Overflow用户

发布于 2015-01-22 22:44:10

看起来BasicLineFormatter得到了它的静态INSTANCE in 4.3-beta1 linklink

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27921077

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档