8

我正在尝试使用 findbugs 1.3.2 的注释。

edu.umd.cs.findbugs.annotations.NonNull在一个简单的测试中使用了注释,它工作正常。

但是,现在我有一个大型项目,由子模块组成,使用 maven,并且通过在一些 java 文件中导入该注释,我得到以下编译错误:

com.sun.tools.javac.code.Symbol$CompletionFailure: class file for javax.annotation.meta.When not found

可能是什么问题?我尝试在所有子模块中添加 findbugs 依赖项。也许它与jsr305冲突?我看到我们的依赖项之一使用 jsr305 1.3.9。

4

2 回答 2

8

以我的经验,当您使用@NonNull并且 jsr305.jar 不在类路径上时,总是会发生此错误。为了使用 findbugs 注释,您必须将 annotations.jar 和 jsr305.jar 添加到类路径中。
一些注释(我在想@SuppressWarnings)可以在没有 jsr305.jar 的情况下使用,但@NonNull肯定需要它。

(您在问题中提到了jsr305.jar,但您没有明确表示您已经检查过。另外,人们在搜索错误消息时会登陆这里,他们需要添加jsr305.jar。)只有jsr305.jar 的一个版本应该在类路径中。

于 2012-10-19T12:54:36.783 回答
2

你也可以使用这个依赖

    <dependency>
        <groupId>com.google.code.findbugs</groupId>
        <artifactId>annotations</artifactId>
        <version>3.0.1</version>
    </dependency>
于 2019-05-14T18:23:22.303 回答