当我使用Java 8方法引用双冒号运算符(::
)和new运算符(例如MyType::new
)时,我在Spring of Spring Tool套件(STS)中遇到此错误:
无法解析org.eclipse.jdt.annotation.NonNull类型。它是从所需的.class文件间接引用的
如何摆脱这个错误?
Stephan Herrmann的评论中提供了错误描述。有开放的Eclipse issue使这个问题更加用户友好。
解决方案是包含以下依赖项:
<dependency>
<groupId>org.eclipse.jdt</groupId>
<artifactId>org.eclipse.jdt.annotation</artifactId>
<version>2.0.0</version>
</dependency>
Eclipse有一个称为基于注释的空分析功能,它使用注释(例如@NonNull
或@Nullable
)提供编译时检查。在类路径中缺少注释时会出现此错误。
如果您不打算使用基于注释的空分析功能,则可以在Eclipse中禁用它。
打开全局或项目设置,然后转到Java > Compiler > Warnings
。在Null analysis
类别中,取消选中Enable annotation-based null analysis
。然后重建工作区,这些错误将不再显示。
我通过更改“使用默认注释为null规范”解决了它
我输入了两个类名:
javax.annotation.Nonnull
javax.annotation.Nullable