java.lang.nosuchfielderror:示例

q3aa0525  于 2021-06-24  发布在  Storm
关注(0)|答案(4)|浏览(521)

当试图通过stormsubmitter提交我的拓扑时,我得到-

Caused by: java.lang.NoSuchFieldError: INSTANCE  
at org.apache.http.impl.io.DefaultHttpRequestWriterFactory.<init>(DefaultHttpRequestWriterFactory.java:52)

我用的是Spring。
我没有在spoutt/bolt构造函数中初始化httpclient。相反,它是在从中的spring上下文获取的类的构造函数中初始化的 prepare() 螺栓连接方法
代码结构如下-
somebolt.java文件

@Component
public class SomeBolt extends BaseRichBolt {
    private OutputCollector _collector;
    private SomeClient someClient;

    @Override
    public void prepare(Map conf, TopologyContext context, OutputCollector collector) {
        _collector = collector;
        someClient = AppContext.getBean(SomeClient.class);
    }
}

someclient.java文件

@Component
public class SomeClient {
    private final CloseableHttpClient httpClient;

    public SomeClient() {
        this.httpClient = (httpClient == null ? HttpClients.createDefault() : httpClient);
    }
}

appcontext.java文件

@Component
public class AppContext implements ApplicationContextAware {

    private static ApplicationContext applicationContext;

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        AppContext.applicationContext = applicationContext;
    }

    public static <T> T getBean(Class<T> c) {
        return applicationContext.getBean(c);
    }
}
n9vozmp4

n9vozmp41#

严酷是正确的风暴级道路。
所以我所做的工作就是删除了storm附带的httpclient和httpcore,并分别用更新的版本4.3.3和4.3.2替换它们。这将更改works/nimbus/supervisor用于启动的类路径。您可以运行storm classpath并打印出类路径。

[nimbus ~]$ storm classpath
...../storm-0.8.2/lib/httpclient-4.3.3.jar:..../storm-0.8.2/lib/httpcore-4.3.2.jar.....

我不确定这是一个很好的工作周围,我不知道什么部分的风暴使用这个jar。
如果您查看pythonStorm代码,就会发现它会将所有jar放在storm root和storm/lib中

def get_classpath(extrajars):
    ret = get_jars_full(STORM_DIR)
    ret.extend(get_jars_full(STORM_DIR + "/lib"))
    ret.extend(extrajars)
    return normclasspath(":".join(ret))
uqdfh47h

uqdfh47h2#

我遇到了类似这样的问题,在我的类路径中有两个jar包含相同的类,httpcore-4.3和apache-httpcomponents-httpcore,我已经从类路径中删除了apache-httpcomponents-httpcore解决了这个问题。

vom3gejh

vom3gejh3#

我在plugin文件夹的路径中有以下jar文件:
./var/lib/jenkins/plugins/build pipeline plugin/web inf/lib/httpcore-4.2.1.jar
./var/lib/jenkins/plugins/git client/web inf/lib/httpcore-4.3.2.jar
./var/lib/jenkins/plugins/maven plugin/web inf/lib/httpcore-4.2.4.jar
之后,我删除了下面的文件,它为我工作
/var/lib/jenkins/plugins/build pipeline plugin/web inf/lib/httpcore-4.2.1.jar

monwx1rj

monwx1rj4#

这可能是一个依赖性问题。
这是一个非常不清楚的错误消息,但我在这里发现了类似的东西:hibernate nosuchfielderror示例,但只有struts1?

相关问题