【问题标题】:Intellij Idea + Maven: dependency version is wrong in run timeIntellij Idea + Maven:运行时依赖版本错误
【发布时间】:2015-12-27 14:20:32
【问题描述】:

这快把我逼疯了。最初我在我的项目中添加了 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 几次.... 请帮忙...

【问题讨论】:

  • 在你的项目的根目录中做一个 mvn dependency:tree,并仔细检查你没有传递包含 2.5.4。
  • 你能显示完整的 pom 文件吗?

标签: java maven intellij-idea


【解决方案1】:

第 1 步:

打开项目的文件夹,然后转到:.idea/libraries/ 你应该在这里找到一个依赖 maven 的文件。 删除jackson-corejackson-databinding文件。


第二步:移除maven依赖

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


第 3 步:检查 Intellij 项目配置

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


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

转到您的主文件夹,对于 Windows:C:\Users\&lt;YOUR_NAME&gt;\.m2\,在此处删除存储库文件夹。


第 5 步:重新导入项目

在 intellij 中:右键单击项目的顶部文件夹,然后单击 &gt; Maven &gt; Reimport


第6步:添加maven dep

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


第 8 步:构建您的项目。

启动您的项目。



这应该可以。

【讨论】:

  • 除了强制它重新下载每个依赖项之外,这对 maven 有何影响?
  • @SatelliteSD 我相信 intellij 中有一个奇怪的行为,因为我上周遇到了这样的问题,这解决了我的问题,我什至不知道为什么,但是 ....
  • 如果构建包含 2.5.4 这是一个 Maven 问题而不是 IDE。
  • 在我的情况下不是,这是一个 IDE 问题,intellij 一直在他的配置中存储错误的版本。
  • Maven 对 IDE 配置不是很感兴趣。
【解决方案2】:

在包含父 pomx.mxl 文件的目录中运行 maven 命令“mvn dependency:tree”,你可以找到那里是否有 2.5.4。也许您添加了其他也导入版本 2.5.4 的 jar,那么您应该排除 2.5.4 版本。

也可以查看本地Maven仓库,删除2.5.4版本的Jackson。

【讨论】:

  • 删除不会有任何帮助,因为它只会被再次下载。由于 Maven 依赖收敛,他还必须在根级别确定依赖关系。
  • 是的,你是对的。但是删除2.5.4版本可以检查构建的处理是否会重新下载这个版本。
【解决方案3】:

我的一个依赖项也有类似的问题。我去了.m2/repository 目录并手动删除了那里不需要的依赖项。我只在m2 目录中保留了我想要的版本。然后我使缓存无效并重新启动 IntelliJ IDEA。这似乎解决了问题。

【讨论】:

    最近更新 更多