首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我需要jsr305在scala中使用芭乐?

为什么我需要jsr305在scala中使用芭乐?
EN

Stack Overflow用户
提问于 2012-04-04 17:01:07
回答 3查看 6K关注 0票数 19

我有以下scala文件:

代码语言:javascript
复制
object SGuavaTryout {
  com.google.common.cache.CacheBuilder.newBuilder()
}

我在类路径中使用guava-11.0.2.jar进行编译。我的scala 2.9.1编译器( eclipse插件和普通scalac)报告:

代码语言:javascript
复制
error while loading CacheBuilder, Missing dependency 
  'class javax.annotation.CheckReturnValue', required by 
  D:\devel\eclipse-workspace\Scala Spielwiese\guava-11.0.2.jar
  (com/google/common/cache/CacheBuilder.class)

要进行编译,我需要将jsr305 (jsr305-1.3.9.jar)添加到构建路径。java的等价物在没有jsr305的情况下编译得很好:

代码语言:javascript
复制
public class JGuavaTryout {
  public void tryout() {
    com.google.common.cache.CacheBuilder.newBuilder();
  }
}

你知道为什么scala需要jsr305吗?有没有官方的jsr305实现可以和guava一起使用?

谢谢!-乔治

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-04-04 18:20:31

这是因为Scala编译器的设计方式,它要求类公开的所有类型在编译时都可用,而Java编译器实际上并不关心。

票数 21
EN

Stack Overflow用户

发布于 2012-04-04 22:28:40

Sean Parson回答了你的第一个问题,解释了为什么Scala需要JSR305依赖。

至于与Guava一起使用的“官方”JSR305实现,我将使用他们在pom.xml中声明的实现

代码语言:javascript
复制
<dependency>
    <groupId>com.google.code.findbugs</groupId>
    <artifactId>jsr305</artifactId>
    <version>1.3.9</version>
</dependency>

如果您使用的是Maven,我认为它会自动将依赖项添加到类路径。

注意:您可以直接从Maven Central repository下载jar。

票数 21
EN

Stack Overflow用户

发布于 2014-01-01 19:32:46

您可以添加此依赖项:

代码语言:javascript
复制
<dependency>
    <groupId>com.google.code.findbugs</groupId>
    <artifactId>jsr305</artifactId>
    <version>2.0.3</version>
    <scope>provided</scope>
</dependency>

因此,编译将会正常工作,而不会到达最终版本。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10007994

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档