当前位置: 首页 > 知识库问答 >
问题:

org.apache.http.impl.io.DefaultHttpRequestWriterFactory中的NoSuchFielderRror实例

金阳曜
2023-03-14
java version "1.7.0_71" 
Gradle 2.1

喂,

UPDATE:
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
java.lang.NoSuchFieldError: INSTANCE
        at org.apache.http.impl.io.DefaultHttpRequestWriterFactory.<init>(DefaultHttpRequestWriterFactory.java:52
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;
    }
}

我从类加载器得到的输出是:

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文件中设置了如下依赖项:

dependencies {
    compile 'org.apache.httpcomponents:httpclient:4.3.6'
}

我也尝试过包含以下httpcore,但仍然得到相同的错误:

compile 'org.apache.httpcomponents:httpcore:4.4'

共有1个答案

龚鸿雪
2023-03-14

org.apache.httpcomponents:httpcore:4.1->4.3.3表示4.1是请求的版本,通过冲突解决将其解析为4.3.3。执行类似gradle-q dependencyInsight--configuration compile-dependencyhttpcore这样的操作可以让您对此有更多的了解。

您应该检查构建输出,并查看应用程序实际打包了哪些JAR。此外,使用某个文件管理器通过构建输出(当然包括归档)运行对basiclineformatter.class的搜索,这将为您提供一个明确的答案,什么JAR包含这个类的什么版本。

如果只有一个版本(4.3.3),这就意味着另一个版本来自运行应用程序的容器。解决这一问题的方法取决于容器。

如果确实找到多个版本,可以尝试在项目中全局排除对httpcore的可传递依赖关系(《用户指南》第51.4.7章)。

如果为特定配置定义排除,则在解析此配置或任何继承配置时,将针对所有依赖项筛选排除的可传递依赖项。

 类似资料:
  • 问题内容: 我有一些arff文件。我想顺序阅读它们并创建一个大数据集。Instances.add(Instance inst)不会将字符串值添加到实例,因此尝试setDataset()…但即使失败。有没有办法完成直观上正确的字符串操作? 问题答案: 这是从邮件列表。我以前保存过 如何将两个数据文件a.arff和b.arff合并到一个数据列表中? 取决于您在说什么合并。您是否只想追加第二个文件(两个

  • 本文向大家介绍JavaScript中的类与实例实现方法,包括了JavaScript中的类与实例实现方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JavaScript中的类与实例实现方法。分享给大家供大家参考。具体如下: JavaScript 中没有父类, 子类的概念, 也没有class 和 instance 的概念, 全靠 prototype chain来实现继承. 当查找一个对象的

  • 本文向大家介绍C++中CSimpleList的实现与测试实例,包括了C++中CSimpleList的实现与测试实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C++简单列表类的实现方法。分享给大家供大家参考。具体方法如下: _AFXTLS.CPP文件如下: _AFXTLS_.H文件如下: 希望本文所述对大家的C++程序设计有所帮助。

  • 我正在将Vue与一个名为AEM的CMS进行集成,该CMS基本上可以像Vue一样作为组件基础系统工作。而不是有一个网页和进口的。vue文件,此CMS上的每个组件都是一个新的vue实例(新的vue({…}))。因此,在我的页面上,有许多Veu实例使用同一个存储(vuex)彼此通信。 这实际上工作得很好,但我有一个场景,当我需要一个CMS组件在另一个组件中时。由于这两个组件都是唯一的vue实例,并且父级

  • 我有java中的类:。和类,它扩展了类。 Class保留Class的实例。 我注意到,当我调用类B的构造函数时(当我在类A中初始化这个参数时),它会执行super(),创建一个新的实例A,并初始化所有It字段。 我如何告诉class

  • 本文向大家介绍实例讲解Java的Spring框架中的AOP实现,包括了实例讲解Java的Spring框架中的AOP实现的使用技巧和注意事项,需要的朋友参考一下 简介 面向切面编程(AOP)提供另外一种角度来思考程序结构,通过这种方式弥补了面向对象编程(OOP)的不足。 除了类(classes)以外,AOP提供了 切面。切面对关注点进行模块化,例如横切多个类型和对象的事务管理。 (这些关注点术语通常