我正在尝试使用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。

最佳答案

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

(您在问题中提到jsr305.jar,但没有明确地说您已经检查过。此外,人们在搜索错误消息时将落在这里,并且需要添加jsr305.jar。)仅类路径上应该有一个jsr305.jar版本。

08-06 06:11