java – 为什么我需要添加神器JSR305才能使用Guava 14?
在查找stackoverflow的信息时,我看到了一个类似于我的问题,但没有真正的答案
here.
我需要将我的maven项目从番石榴11.0.2迁移到番石榴14或更高(我需要RangeSet).我用依赖更新了我的maven pom: <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>14.0</version> </dependency> 然后我运行maven构建,并得到此错误: [ERROR] xxx.java: cannot find symbol [ERROR] symbol : class Nonnull [ERROR] location: package javax.annotation 我仔细观察了这个注释,JSR305提供了这个注释,其中依赖于guava 11.0.2,正如mvn repository报道的那样. 我觉得奇怪的是,番石榴14还依赖于JSR305作为mvn repository的报道. 如果我将JSR依赖项添加到我的pom,那么编译运行正常: <dependency> <groupId>com.google.code.findbugs</groupId> <artifactId>jsr305</artifactId> <version>1.3.9</version> <scope>provided</scope> </dependency> 但是,如果guava已经依赖它,为什么我必须将此依赖项添加到我的pom中?这看起来更像是一种解决方法,而不是解决方案,我更愿意理解并使事情变得清晰. 感谢您的参与. 解决方法
您需要将其添加为依赖项的原因是因为Guava 14在其pom中定义了依赖关系,如下所示:
<dependency> <groupId>com.google.code.findbugs</groupId> <artifactId>jsr305</artifactId> <version>1.3.9</version> <scope>provided</scope> </dependency> 您问题的重要部分是< scope>提供< / scope>线. 从maven website开始,他们就提供的依赖关系说明如下:
所以基本上是因为Guava已将此设置为提供的依赖关系,他们希望任何使用Guava的人提供此依赖关系,这正是您必须要做的事情. 在Guava 11.0.2中,它是一个正常的编译依赖项,因此您不必在自己的项目中提供它. 改变是在番石榴13.从release notes:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |