我想使用@Nullable
注释来消除NullPointerExceptions
. 我在网上找到了一些教程,我注意到这个注释来自包javax.annotation.Nullable
;但是当我导入它时会产生编译错误:找不到符号
9 回答
您需要包含该类所在的 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'
}
工件已从net.sourceforge.findbugs
移至
<dependency>
<groupId>com.google.code.findbugs</groupId>
<artifactId>jsr305</artifactId>
<version>3.0.0</version>
</dependency>
如果您使用的是 Gradle,则可以像这样包含依赖项:
repositories {
mavenCentral()
}
dependencies {
compile group: 'com.google.code.findbugs', name: 'jsr305', version: '3.0.0'
}
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 的文档。
如果有人在尝试编译 Android 项目时遇到此问题,则在android.support.annotation.Nullable
. 因此,请注意您在import
s 中引用了哪个包。
如果有人在外部构建在 IntelliJ IDEA 中创建的 Maven 项目时遇到此问题,我使用以下依赖项而不是答案:
<dependency>
<groupId>org.jetbrains</groupId>
<artifactId>annotations</artifactId>
<version>15.0</version>
</dependency>
使用这将允许项目在 IntelliJ IDEA 上构建,并使用 Maven 自行构建。
你可以在这里找到它。
您可以通过在 gradle.build 中添加以下行来添加最新版本。
implementation group: 'com.google.code.findbugs', name: 'jsr305', version: '3.0.2'
我正在使用包含注释的番石榴:
(毕业代码)
compile 'com.google.guava:guava:23.4-jre'
对于 Android 项目,您可以通过更改项目/模块 gradle 文件 (build.gradle) 来修复此错误,如下所示:
dependencies { implementation 'com.android.support:support-annotations:24.2.0' }
如需更多信息,请参阅此处。