使用findbugs的java编译错误。 com.sun.tools.javac.code.Symbol $ CompletionFailure:javax.annotation.meta的类文件。如果找不到

时间:2012-06-19 15:48:15

标签: java findbugs

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

2 个答案:

答案 0 :(得分:6)

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

(你在你的问题中提到了jsr305.jar,但是你没有明确说明你已经检查过了。而且,当搜索错误信息时,人们会在这里登陆,他们需要添加jsr305.jar 。)只有一个版本的jsr305.jar应该在类路径上。

答案 1 :(得分:0)

您也可以使用此依赖项

    <dependency>
        <groupId>com.google.code.findbugs</groupId>
        <artifactId>annotations</artifactId>
        <version>3.0.1</version>
    </dependency>