143

我想使用@Nullable 注释来消除NullPointerExceptions. 我在网上找到了一些教程,我注意到这个注释来自包javax.annotation.Nullable;但是当我导入它时会产生编译错误:找不到符号

4

9 回答 9

181

您需要包含该类所在的 jar。您可以在此处找到它

如果使用 Maven,可以添加以下依赖声明:

<dependency>
  <groupId>com.google.code.findbugs</groupId>
  <artifactId>jsr305</artifactId>
  <version>3.0.2</version>
</dependency>

对于 Gradle:

dependencies {
  testImplementation 'com.google.code.findbugs:jsr305:3.0.2'
}
于 2013-09-26T14:38:07.263 回答
39

工件已从net.sourceforge.findbugs移至

<dependency>
    <groupId>com.google.code.findbugs</groupId>
    <artifactId>jsr305</artifactId>
    <version>3.0.0</version>
</dependency>
于 2014-07-18T12:24:29.317 回答
29

如果您使用的是 Gradle,则可以像这样包含依赖项:

repositories {
    mavenCentral()
}

dependencies {
    compile group: 'com.google.code.findbugs', name: 'jsr305', version: '3.0.0'
}
于 2015-06-01T07:03:57.103 回答
12

JSR-305是扩展规范的“Java 规范请求”。@Nullable等是其中的一部分;然而,从那以后它似乎是“休眠的”(或冻结的)(参见这个 SO question)。所以要使用这些注解,你必须自己添加库。

FindBugs已重命名为SpotBugs,并且正在使用该名称进行开发。

对于 Maven,这是当前 仅注解的依赖项(此处为其他集成):

<dependency>
  <groupId>com.github.spotbugs</groupId>
  <artifactId>spotbugs-annotations</artifactId>
  <version>4.2.0</version>
</dependency>

如果您想使用完整的插件,请参阅 SpotBugs 的文档。

于 2020-12-23T12:44:33.413 回答
8

如果有人在尝试编译 Android 项目时遇到此问题,则在android.support.annotation.Nullable. 因此,请注意您在imports 中引用了哪个包。

于 2016-05-12T10:13:44.277 回答
4

如果有人在外部构建在 IntelliJ IDEA 中创建的 Maven 项目时遇到此问题,我使用以下依赖项而不是答案:

<dependency>
  <groupId>org.jetbrains</groupId>
  <artifactId>annotations</artifactId>
  <version>15.0</version>
</dependency>

使用这将允许项目在 IntelliJ IDEA 上构建,并使用 Maven 自行构建。

你可以在这里找到它。

于 2018-01-23T20:09:51.703 回答
4

您可以通过在 gradle.build 中添加以下行来添加最新版本。

implementation group: 'com.google.code.findbugs', name: 'jsr305', version: '3.0.2'
于 2019-01-02T05:17:01.390 回答
2

我正在使用包含注释的番石榴:

(毕业代码)

compile 'com.google.guava:guava:23.4-jre'
于 2017-11-20T23:13:12.573 回答
1

对于 Android 项目,您可以通过更改项目/模块 gradle 文件 (build.gradle) 来修复此错误,如下所示:

dependencies { implementation 'com.android.support:support-annotations:24.2.0' }

如需更多信息,请参阅此处

于 2018-10-08T07:32:14.073 回答