gpt4 book ai didi

java - 引入依赖会破坏现有的依赖吗?

转载 作者:太空宇宙 更新时间:2023-11-04 06:56:32 25 4
gpt4 key购买 nike

我正在开发一个可以正常构建和部署的项目。我正在尝试添加一些使用 JWebUnit 的代码,并使用以下 Maven 代码将其引入:

<dependency>
<groupId>net.sourceforge.jwebunit</groupId>
<artifactId>jwebunit-htmlunit-plugin</artifactId>
<version>3.2</version>
<scope>test</scope>
</dependency>

Maven 似乎解决了这个问题,它引入了所有内容(我正在使用 Intellij,它现在出现在“Maven 项目”选项卡中的“依赖项”下,也出现在“项目”选项卡中的“外部库”下)。

但是,当我引入此依赖项时,IDE 无法找到它(例如,如果我使用 import net.sourceforge.jwebunit.junit.WebTester,它就找不到它)。

但一个更大的问题是它实际上破坏了一些现有代码——我有一些使用 org.apache.commons.httpclient.HttpClient 的 JUnit 测试,现在在 Maven 的安装目标上我得到了一个NoClassDefFoundError - 无法初始化该类的类

如果我删除 JWebUnit 依赖项,Maven 安装目标将成功退出。

在引入新的依赖项时,我习惯于看到有关依赖项版本收敛的错误,并且我觉得追逐这个“未找到类定义”错误可能是转移注意力,但我不确定 Maven 中可能导致该问题的一般类型。

编辑:拉入 HttpClient 的依赖代码是:

<dependency>
<groupId>commons-httpclient</groupId>
<artifactId>commons-httpclient</artifactId>
<version>3.1</version>
</dependency>

最佳答案

jwebunit-htmlunit-plugin 包含传递依赖项,这些依赖项似乎与您的某些依赖项发生冲突(可能是因为它们是不同的版本)。

Maven 将类路径优先级放在先前声明的 Artifact 上。尝试将 jwebunit 移至依赖项部分的末尾,或者至少移至引入 httpclient 类的位置之后。或者,您可以手动排除某些传递依赖项,以免被拉入,但这可能很乏味。

至于您的 IDE 不允许在库上导入,请记住您已在 test 范围中声明了这一点。生产类无法看到test依赖项。

关于java - 引入依赖会破坏现有的依赖吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22670534/

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