java / maven项目中的外部资源突然无效?

时间:2013-12-07 00:31:04

标签: java maven import

我有一个项目,自上次工作以来我回到了几个月,并注意到我在项目中导入和使用的大多数外部类现在都无效且无法找到。 Pic附加enter image description here

当我运行maven clean install时,我会遇到错误

java:[141,17] reference to JsonNode is ambiguous, both class org.codehaus.jackson.JsonNode in org.codehaus.jackson and class com.fasterxml.jackson.databind.JsonNode in com.fasterxml.jackson.databind match

有几种此类错误,引用使用无法导入的类的行号。

这些问题可能相关吗?如果是这样,重新安装我需要在项目中使用的库并摆脱冲突的简单方法是什么?

感谢您的帮助, - 亚当

2 个答案:

答案 0 :(得分:1)

如果您没有更改项目中的任何内容,maven构建可能会在您的pom.xml中选择一个较新版本的某些依赖项。您可能对最新版本或某些工件的版本范围有一些依赖关系,如this question中所述。

我的猜测是对jackson-databind的依赖已从2.2.x变为2.3.0,最近才发布到maven中央存储库(see here)。在2.2.x和2.3.0之间,他们将班级JsonNode移到了包com.fasterxml.jackson.databind

如果这是导致问题的原因,那么如果您在pom中设置特定的版本依赖关系或至少更窄的范围,则构建将更加可重复且一致。对于jackson-databind,请尝试将版本设置为2.2.3

答案 1 :(得分:0)

检查编译错误所指的类。您可能有一些导入,如:

import org.codehaus.jackson.*;
import com.fasterxml.jackson.databind.*;

然后您将尝试使用JsonNode。编译器告诉你这是“模棱两可的”,因为上面的两个导入都有一个名为“JsonNode”的类。您只需要通过代码中的完整类路径指定它来调出所需的JsonNode。

org.codehaus.jackson.JsonNode node = new org.codehaus.jackson.JsonNode();

(或类似的东西)

一旦你的maven构建完成,那些其他错误可能会在你的IDE屏幕截图中消失。