Intellij Idea + Maven: 运行时依赖版本错误

7

这让我很困惑。最初我将 Jackson v. 2.5.4 依赖项添加到我的项目中。后来,我像这样更新到了 2.6.4:

    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-core</artifactId>
        <version>2.6.4</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.6.4</version>
    </dependency>

当编写代码时,我可以看到新版本的功能。此外,在项目设置中的模块和构件下,一切都显示为 jackson 2.6.4。
但是,当我运行程序时,显然它正在使用版本 2.5.4。我发现在 2.6.0 中添加的新功能不在那里,同时我已经检查过:
System.out.println(ObjectMapper.class.getPackage().getSpecificationVersion());

输出结果为2.5.4...

我重新构建了项目,重新导入了依赖项,并多次重启了IntelliJ...请帮忙解决...


3
请在您的项目根目录下运行“mvn dependency:tree”命令,并确保您没有通过传递方式包含2.5.4版本的依赖项。注意不要改变原来的意思。 - sschrass
你能展示完整的pom文件吗? - khmarbaise
5个回答

7

步骤1:

打开项目文件夹,然后进入:.idea/libraries/ ,您应该会找到一个maven依赖的文件。删除jackson-corejackson-databinding文件。


步骤2:删除maven依赖项

从`pom.xml'文件中删除这两个依赖项(不要注释掉,删除行)。


步骤3:检查Intellij项目配置

打开项目结构窗口(在Intellij中单击顶级父文件夹,然后按F4),然后转到选项卡。确保这两个依赖项不存在,如果存在,请将它们也删除(使用顶部的“-”按钮)。


步骤4:删除所有缓存的maven库

前往您的主文件夹,对于Windows:C:\Users\<YOUR_NAME>\.m2\,在这里删除存储库文件夹。


步骤5:重新导入项目

在Intellij中:右键单击项目的顶级文件夹,然后> Maven > 重新导入


步骤6:添加maven依赖项

将您的两个依赖项添加到pom.xml中。


步骤8:构建您的项目。

启动您的项目。



这应该可以工作。


2
除了强制Maven再次下载每个依赖项之外,这会对Maven产生什么影响? - sschrass
如果构建包含2.5.4,则这是Maven问题而不是IDE。 - sschrass
Maven 不是非常关注 IDE 配置。 - sschrass
我知道,但在我的情况下,这是一个Spring Boot项目,即使我使用Maven进行项目构建,当我点击“启动”项目时,IntelliJ似乎没有使用mvn来构建项目(我知道这很奇怪,但某些项目启动配置与配置交互)。 - Anthony Raymond
我知道你说的话,但你是错的。无论你提出什么启动配置,Maven 都依赖于 POM 文件。 - sschrass
显示剩余4条评论

0
在包含父POMX.MXL文件的目录中运行Maven命令“MVN DEPENDENCY: TREE”,您可以找到是否有2.5.4版本。也许您添加了其他导入2.5.4版本的JAR,那么您应该排除2.5.4版本。
此外,您还可以检查本地Maven存储库,并删除2.5.4版本的Jackson。

删除不会有任何帮助,因为它只会被再次下载。此外,他必须确定根级别的依赖关系,因为有 Maven 依赖收敛。 - sschrass
是的,你说得对。但是删除2.5.4版本后,构建过程会再次下载此版本以进行检查。 - wanglijie

0

我曾经遇到过一个类似的依赖问题。我进入了 .m2/repository 目录,手动删除了那里不需要的依赖项。我只保留了我想要的版本在 m2 目录中。然后我使我的缓存失效并重新启动了 IntelliJ IDEA。这似乎已经解决了问题。


0

这是一个旧帖子,但以防万一,在较新的版本(2023.1.2)中对我有效的方法是手动删除缓存的错误版本。可以按照以下步骤完成:

  1. 在项目层次结构中找到"External Libraries"和其中的错误依赖项。
  2. 右键点击 -> 打开库设置(或左键点击 -> F4)
  3. 这将打开“项目结构/库”(ctrl + shift + alt + s),并选择列表中的依赖项。
  4. 点击列表顶部的 "-" 图标。确认后重新导入Maven,它应该会下载正确的版本。

0
对我来说,在我的.m2中删除依赖项没有帮助,清除缓存也没有用。最后,我只能重新克隆我的仓库,然后它就正常工作了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接