gpt4 book ai didi

java - 使用maven在java应用程序中运行两个版本的elasticsearch

转载 作者:行者123 更新时间:2023-12-02 01:05:06 27 4
gpt4 key购买 nike

我有一个旧的整体应用程序,它使用elasticsearch 1.X,现在我们需要在同一应用程序中运行elasticsearch 7.X,以便在两个版本的elasticsearch中具有相同的应用程序索引和查询数据。

在我的项目中,有多个模块,它们都有自己的POM和父POM,而我使用elasticsearch 7.X的新模块依赖于某些使用1.X的模块。

虽然我已经排除了使用 7.X 的模块中的 1.X 特定依赖项,但它仍然给出了以下错误:

[76B7CCD2] java.lang.NoSuchFieldError: LATEST at org.elasticsearch.Version.(Version.java:49) at org.elasticsearch.common.io.stream.StreamInput.(StreamInput.java:114)

经过大量研究并使用 thisthis链接,正如所解释的,我排除了弹性 1.x 依赖项,但看起来仍然像我的其他子模块仍然具有 ES 1.X 并且这也是必需的,因此我的应用程序的整体类路径具有两个版本 org.elasticsearch.Version 来自同一个包 org.elasticsearch 的 java 类,我认为这是根本原因。

现在,如何从同一库的两个不同版本的同一包中包含相同的类。

最佳答案

你不能。您只能拥有一个具有给定完整限定名称(包 + 名称)的类。

您可以尝试使用 Maven 阴影插件(实际上从未尝试过)对其中一个包进行阴影处理(即重命名它),这可能会起作用。

通常,您需要更改代码并进行修改,直到找到适用于所有依赖项的 Elasticsearch 版本。

关于java - 使用maven在java应用程序中运行两个版本的elasticsearch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57739284/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com