弹性搜索开始期间的java.lang.NoSuchMethodError [英] java.lang.NoSuchMethodError during Elastic search start

查看:46
本文介绍了弹性搜索开始期间的java.lang.NoSuchMethodError的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在EAR中部署时出现以下错误.弹性搜索连接期间发生异常.在我的EAR中,我使用的是番石榴版本18.这是ES 2.0+的推荐版本(我使用的是ES 2.3.3)

I am getting the following error while deploying in my EAR. The exception is coming during Elastic search connection. In my EAR I have using guava version 18. Which is the recommended version for ES 2.0+ ( I am using ES 2.3.3)

weblogic.application.ModuleException: java.lang.NoSuchMethodError: com.google.common.util.concurrent.MoreExecutors.directExecutor()Ljava/util/concurrent/Executor;
        at weblogic.application.internal.ExtensibleModuleWrapper.start(ExtensibleModuleWrapper.java:140)
        at weblogic.application.internal.flow.ModuleListenerInvoker.start(ModuleListenerInvoker.java:124)
        at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:216)
.....    
Caused By: java.lang.NoSuchMethodError: com.google.common.util.concurrent.MoreExecutors.directExecutor()Ljava/util/concurrent/Executor;
        at org.elasticsearch.threadpool.ThreadPool.<clinit>(ThreadPool.java:190)
        at org.elasticsearch.client.transport.TransportClient$Builder.build(TransportClient.java:131)
        at com.ventyx.servicesuite.dispatcher.ESClientMgr.connect(ESClientMgr.java:80)

....

在大多数搜索中,它都提到其原因是番石榴罐子冲突.

In most of the search its mentioned that its because guava jars conflict.

java.lang.NoSuchMethodError:com.google.common.util.concurrent.MoreExecutors.sameThreadExecutor

因此,我在运行Weblogic时已添加-verbose:class作为Java选项,以查看是否已加载旧版本的番石榴

So I have added -verbose:class as Java option while running my weblogic to see if old version of guava is loaded

但令我惊讶的是,它没有发现任何番石榴罐子被装上.但我怀疑weblogic.server.merged.jar是否已预先打包了Google库.

But to my surprise it did not find any guava jar getting loaded. But I suspect that weblogic.server.merged.jar is have google libraries prepackaged in it.

所以我的问题是有什么方法可以告诉容器使用应用程序而不是weblogic的jar文件?

So my question is Is there any way we could tell the container to use the jar files from the application rather than weblogic's ?

推荐答案

我可以通过向我的EAR中添加带有preferred-application-packages的weblogic-application.xml来解决此问题.

I could resolve this problem by adding a weblogic-application.xml with prefer-application-packages to my EAR.

<?xml version="1.0" encoding="UTF-8"?>
<weblogic-application xmlns="http://xmlns.oracle.com/weblogic/weblogic-application"
                      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                      xmlns:wls="http://xmlns.oracle.com/weblogic/weblogic-application"                       
                      xsi:schemaLocation="http://xmlns.oracle.com/weblogic/weblogic-application http://xmlns.oracle.com/weblogic/weblogic-application/1.0/weblogic-application.xsd">
    <prefer-application-packages>
        <package-name>com.google.common.*</package-name>
    </prefer-application-packages>
</weblogic-application>

这篇关于弹性搜索开始期间的java.lang.NoSuchMethodError的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆