我希望使用@Nullable
注释来消除NullPointerExceptions
。
我在网上找到了一些教程,我注意到这个注释来自包javax.annotation.Nullable
;
但是当我导入它时会产生编译错误:找不到符号
答案 0 :(得分:116)
您需要包含此类所在的jar。您可以找到它here
如果使用Maven,您可以添加以下依赖项声明:
<dependency>
<groupId>com.google.code.findbugs</groupId>
<artifactId>jsr305</artifactId>
<version>3.0.2</version>
</dependency>
答案 1 :(得分:32)
工件已从net.sourceforge.findbugs
移至
<dependency>
<groupId>com.google.code.findbugs</groupId>
<artifactId>jsr305</artifactId>
<version>3.0.0</version>
</dependency>
答案 2 :(得分:26)
如果您使用的是Gradle,则可以包含这样的依赖项:
repositories {
mavenCentral()
}
dependencies {
compile group: 'com.google.code.findbugs', name: 'jsr305', version: '3.0.0'
}
答案 3 :(得分:7)
如果在尝试编译Android项目时有人这样做,android.support.annotation.Nullable
中有另一个Nullable实现。因此,请注意您在import
s。
答案 4 :(得分:7)
JSR-305 是用于扩展规范的“Java 规范请求”。 @Nullable
等是其中的一部分;然而它似乎从 (See this SO question) 开始就“休眠”(或冻结)了。所以要使用这些注解,你必须自己添加库。
FindBugs 已重命名为 SpotBugs 并正在以该名称进行开发。
对于 maven,这是 current 仅注释 依赖项(其他集成 here):
<dependency>
<groupId>com.github.spotbugs</groupId>
<artifactId>spotbugs-annotations</artifactId>
<version>4.2.0</version>
</dependency>
如果您想使用完整的插件,请参阅 SpotBugs 的文档。
答案 5 :(得分:4)
如果在外部创建在IntelliJ IDEA中创建的Maven项目时有任何人遇到此问题,我使用了以下依赖项而不是答案:
<dependency>
<groupId>org.jetbrains</groupId>
<artifactId>annotations</artifactId>
<version>15.0</version>
</dependency>
使用它将允许项目在IntelliJ IDEA上构建,并使用Maven构建。
你可以找到它here。
答案 6 :(得分:2)
我正在使用包含注释的Guava:
(Gradle代码)
compile 'com.google.guava:guava:23.4-jre'
答案 7 :(得分:1)
您可以通过在gradle.build中添加以下行来添加最新版本。
implementation group: 'com.google.code.findbugs', name: 'jsr305', version: '3.0.2'
答案 8 :(得分:0)
对于Android项目,您可以通过如下更改项目/模块gradle文件(build.gradle)来解决此错误:
print(getWays(5, [5, 2]))
print(getWays(13, [3, 9, 3, 2]))
print(getWays(0, []))
print(getWays(1, []))
有关更多信息,请参阅here。