gpt4 book ai didi

java - 在 Maven 项目中添加现有依赖项的更新版本

转载 作者:行者123 更新时间:2023-12-02 05:03:29 25 4
gpt4 key购买 nike

供您引用,我是 Maven 环境的新手,并且不熟悉 Java 开发。

首先,我编写了一个使用org.apache.httpcomponents:httpclient:4.3.6的项目。它运行得很好并且没有任何问题。我将源代码(Java 文件)放入另一个使用 Maven 配置的 Eclipse Web 项目中。因此,我在 pom.xml 中添加了一个依赖项,并且它已成功编译。但是当我运行的时候出现了一个问题。它显示java.lang.NoSuchFieldError。经过多次尝试和失败,我断定是版本问题造成的。

pom.xml 中的依赖项:

<dependencies>
<dependency>
<groupId>net.generalsvc</groupId>
<artifactId>ubi.base.bin</artifactId>
<version>2.1.0-SNAPSHOT</version>
</dependency>
...
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.3.6</version>
</dependency>
</dependencies>

net.generalsvc:ubi.base.bin 包含 org.apache.http:httpclient:4.2.1 的依赖项。所以结果依赖层次如下。

Dependency Hierarchy

我认为我的代码引用的是“4.2.1”版本而不是“4.3.6”版本。如何将“4.3.6”版本分配给我的 Java 文件?我可以通过为我的代码添加 httpclient:4.3.6 来保留项目的现有依赖关系吗?

最佳答案

Maven 使用“距离”度量来决定使用哪个依赖项。该措施是每个 pom.xml 的一个步骤(pom.xml 中的依赖项为 1,这些依赖项的 pom 的依赖项为 2,等等),并且包含更接近的一个,因此如果您在 pom.xml 中包含一个版本,这就是正在使用的版本。

相同的依赖项(相同的 groupId 和 artifactId)不能用于两个不同的版本,因此您无法保留依赖项的依赖项并包含它们的另一个版本。

关于java - 在 Maven 项目中添加现有依赖项的更新版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28028164/

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