Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么Maven需要相同版本的不同依赖项?_Java_Maven_Jersey - Fatal编程技术网

Java 为什么Maven需要相同版本的不同依赖项?

Java 为什么Maven需要相同版本的不同依赖项?,java,maven,jersey,Java,Maven,Jersey,我是一名学生,在Java方面有相当多的经验,但对Maven完全陌生 我试图用jersey服务器和jersey客户端实现一个RESTful服务提供者和客户端。两者都依赖于jersey json,以利用POJO和json之间的自动转换。它们还依赖于我自己实现的服务模型,POJO定义位于该模型中 但是,代码不适合我。我花了好几个小时在互联网上到处寻找解决方案。失败的原因是我意外地将jersey server和jersey client的版本指定为1.14,而将jersey json指定为1.9.1 服

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

我试图用jersey服务器和jersey客户端实现一个RESTful服务提供者和客户端。两者都依赖于jersey json,以利用POJO和json之间的自动转换。它们还依赖于我自己实现的服务模型,POJO定义位于该模型中

但是,代码不适合我。我花了好几个小时在互联网上到处寻找解决方案。失败的原因是我意外地将jersey server和jersey client的版本指定为1.14,而将jersey json指定为1.9.1

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


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

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


如果您尝试混合使用不同的版本,它可能有效,也可能无效,因为它不是预期或测试的组合。

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

在这种情况下,Jersey库似乎都是作为“捆绑包”一起发布的,您需要同时使用这些捆绑包中的版本。见:


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

因为不同的版本可能有不同的API。
mvn dependency:tree
在我为两个库指定1)1.14时给出了不同的输出2)为每个库指定1.14和1.9.1。但这些不同的输出只是在某些依赖项的版本号上有所不同,对我来说没有多大意义。没有一个万能的答案。当使用另一个库的错误版本时,依赖关系管理/库中断是软件中的一个常见问题。您似乎已经发现,某些Jersey组件必须来自同一版本的“包”。什么是“同一发行版”?“发行版”是指打包在一起并分配了版本号的软件工件集(库、文档、示例)。