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