一尘不染

elasticsearch开始期间的java.lang.NoSuchMethodError

elasticsearch

在EAR中部署时出现以下错误。elasticsearch连接期间发生异常。在我的EAR中,我使用的是番石榴版本18。这是ES 2.0+的推荐版本(我使用的是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)

....

在大多数搜索中,它都提到它是因为番石榴jar有冲突。

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

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

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

所以我的问题是,有什么办法可以告诉容器使用应用程序而非Weblogic的jar文件?


阅读 1002

收藏
2020-06-22

共1个答案

一尘不染

我可以通过将带有preferred-application-packages的weblogic-application.xml添加到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>
2020-06-22