在寻找有关 stackoverflow 的信息时,我看到了一个类似于我的问题,但这里没有真正的答案。
我需要将我的 Maven 项目从guava 11.0.2迁移到guava 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 存储库所报告的那样。
我觉得奇怪的是guava 14也依赖于JSR305作为mvn 存储库报告。
如果我将 JSR 依赖项添加到我的 pom 中,则编译运行良好:
<dependency>
<groupId>com.google.code.findbugs</groupId>
<artifactId>jsr305</artifactId>
<version>1.3.9</version>
<scope>provided</scope>
</dependency>
但是,如果番石榴已经依赖它,为什么我必须将此依赖项添加到我的 pom 中?这看起来更像是一种解决方法而不是解决方案,我更愿意理解并使事情变得干净。
感谢您的参与。