当前位置: 首页 > 面试题库 >

elasticsearch开始期间的java.lang.NoSuchMethodError

东方弘壮
2023-03-14
问题内容

在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文件?


问题答案:

我可以通过将带有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>


 类似资料:
  • 问题内容: 从DATETIME中删除 日期 的最佳方法是什么,以便仅剩下 时间 进行比较? 我知道我可以执行以下操作: 但这涉及转换和字符。如果我想检查DATETIME列中是否存储了另外两个时间之间的时间(包括分钟),是否有一种优雅的方法可以执行此操作而不必依赖转换为字符串? 问题答案: 从Essential SQL Server日期,时间和DateTime函数中 尝试使用TimeOnly函数:

  • 问题内容: 如果可能的话,在以下情况下,我希望使用joda或非joda解决方案 假设我的一周从2012年5月2日开始,给定的当前日期为02/22/2011。我需要计算给定当前日期的星期开始和结束日期。因此,我的解决方案的星期应该从02/19开始,而星期在02/25结束。为简单起见,我将我的工作日设置为02/05/2011,但是可能是任何一天,我的工作日始终为7天。 我现有的代码如下,但似乎无法按预

  • 问题内容: 我有当前日期,还有一个常数,它指示星期几。我想基于该常数获取一周的开始日期。如果我将一周的第一天硬编码为星期一(或其他任何东西),那么这很简单。但是一周的第一天一直在变化。因此,我不想在每次更改第一天时都更改代码。 这是我尝试使用Java的Calendar的方法: 我想获取一周的开始日期。上面的函数返回星期的第一天,并且星期开始日期被硬编码为星期六。每当星期开始日期以上的要求发生变化时

  • 我正在尝试将实例转换为实例。 我没有得到编译器错误,但实例值错误。 我认为它不起作用,因为将时间存储在中,而不是中。 我使用的是JDK1.8版。

  • 问题内容: 我想检查日期是否在开始日期和结束日期之间。 我添加了一个where子句 但问题在于它不包含“ 2010-04-15”。 它应该包括结束日期,我该怎么办? 请帮我 问候, 潘卡 问题答案: 明确指定时间部分:

  • 所以我有: < code >日期开始日期,即< code > EEST 2022年3月27日17时32分01秒 和 ,即 我需要根据这两个值生成一个新日期。我需要将240H周期添加到开始日期。240H意味着我需要添加到开始日期的10天,我最终需要一个新的日期,应该是EEST 2022年4月6日星期三17:32.01。 PS.我是Java的新手,希望我不会问愚蠢的事情。