1

我是一名在 Java 方面有相当丰富经验的学生,但对 Maven 完全陌生。

我试图用 jersey-server 和 jersey-client 实现一个 RESTful 服务提供者和客户端。两者都依赖 jersey-json,利用 POJO 和 JSON 之间的自动转换。它们都依赖于我自己实现的服务模型,POJO 定义所在的位置。

但是,该代码对我不起作用。我花了好几个小时在 Internet 上到处寻找解决方案。原来失败的原因是我不小心将 jersey-server 和 jersey-client 的版本指定为 1.14,而 jersey-json 为 1.9.1。

服务器一开始不工作,但在某个时候突然开始工作。(我不知道这是怎么发生的。)在我将 jersey-json 版本更改为 1.14 之前,客户端从未工作过。

为什么我需要为这些不同的依赖项使用相同的版本?

4

2 回答 2

2

因为一个依赖于另一个,否则存在兼容性问题。这就是依赖管理的全部内容。运行mvn dependency:tree以查看这些库之间的确切关系。

在这种情况下,Jersey 库似乎都作为“捆绑包”一起发布 - 您需要一起使用这些捆绑包中的版本。见:http: //jersey.java.net/nonav/documentation/latest/chapter_deps.html

请注意,这是 Jersey 库的属性,而不是 Maven。

于 2012-09-21T17:01:14.793 回答
1

通常,来自同一发行版的不同 jar 会一起测试并给出相同的版本号。

如果您尝试混合不同的版本,它可能会起作用,也可能不会,因为它不是预期或测试的组合。

于 2012-09-21T17:01:11.093 回答