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

lub*_*nac 24 java eclipse java-8 spring-tool-suite method-reference

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

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

如何摆脱这个错误?

lub*_*nac 14

Stephan Herrmann的评论中提供了错误描述.有一个开放的Eclipse问题,使这个问题更加用户友好.

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

<dependency>
    <groupId>org.eclipse.jdt</groupId>
    <artifactId>org.eclipse.jdt.annotation</artifactId>
    <version>2.0.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

  • 对,错误表明Eclipse项目配置为执行基于空值分析的注释,但类路径上没有可用的空注释.使空注释可用(通过项目使用的任何依赖机制)不仅仅是一种解决方法,而且实际上是正确的解决方案.Eclipse错误适合报告此配置问题(优于问题中的解决错误). (2认同)

kap*_*pex 12

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

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

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


Hor*_*ux7 5

我通过更改“对空规范使用默认注释”解决了这个问题

我已经输入了两个类名:

javax.annotation.Nonnull
javax.annotation.Nullable
Run Code Online (Sandbox Code Playgroud)