无法解析org.eclipse.jdt.annotation.NonNull类型。它是从所需的.class文件间接引用的

时间:2015-11-18 16:48:24

标签: java eclipse java-8 spring-tool-suite method-reference

当我使用带有new运算符的Java 8方法引用双冒号运算符(::)时(例如MyType::new),我在Spring of Spring Tool套件(STS)中遇到此错误:

  

无法解析org.eclipse.jdt.annotation.NonNull类型。它是从所需的.class文件间接引用的

如何摆脱这个错误?

3 个答案:

答案 0 :(得分:13)

错误描述在Stephan Herrmann的评论中提供。有一个开放Eclipse issue可以使这个问题更加用户友好。

解决方案是包含以下依赖项:

<dependency>
    <groupId>org.eclipse.jdt</groupId>
    <artifactId>org.eclipse.jdt.annotation</artifactId>
    <version>2.0.0</version>
</dependency>

答案 1 :(得分:11)

Eclipse有一个名为基于注释的空分析的功能,它使用注释(例如@NonNull@Nullable)提供编译时检查。在类路径中缺少注释时会出现此错误。

如果您不打算使用基于注释的空分析功能,则可以在Eclipse中禁用它。

打开全局或项目设置,然后转到Java > Compiler > Warnings。在Null analysis类别中,取消选中Enable annotation-based null analysis。然后重建工作区,这些错误将不再显示。

答案 2 :(得分:0)

我已通过更改“对空规范使用默认注释”来解决它

我同时输入了两个班级名称:

javax.annotation.Nonnull
javax.annotation.Nullable