【发布时间】:2014-06-17 12:20:56
【问题描述】:
在寻找有关 stackoverflow 的信息时,我看到了一个与我类似的问题,但没有真正的答案 here。
我需要将我的 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 repository 所报告的那样。
我觉得奇怪的是,guava 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>
但是,如果番石榴已经依赖它,我为什么还要将这个依赖添加到我的 pom 中呢?这看起来更像是一种解决方法而不是解决方案,我更愿意理解并使事情变得干净。
感谢参与。
【问题讨论】:
-
我似乎记得在使用 Scala 编译器时这是必要的——这是你的设置吗?
-
这不是我的设置,因为我构建了一个 java 项目。但这个问题和我的很接近……