在javax.annotation中找不到@Nullable。*

时间:2013-09-26 14:25:54

标签: java annotations nullpointerexception nullable null-pointer

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

9 个答案:

答案 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