java eclipse java-8 spring-tool-suite method-reference

java - El tipo org.eclipse.jdt.annotation.NonNull no se puede resolver. Se hace referencia indirecta de los archivos.class requeridos



java-8 spring-tool-suite (3)

Cuando uso el operador de dos puntos de referencia del método Java 8 ( :: MyType::new con un operador nuevo (por ejemplo, MyType::new ), recibo este error en Eclipse of Spring Tool suite (STS):

El tipo org.eclipse.jdt.annotation.NonNull no se puede resolver. Se hace referencia indirecta de los archivos .class requeridos

¿Cómo deshacerse de este error?


Eclipse tiene una característica llamada análisis nulo basado en anotaciones , que proporciona verificaciones en tiempo de compilación utilizando anotaciones (por ejemplo, @NonNull o @Nullable ). Obtiene este error cuando faltan las anotaciones en la ruta de clase.

Si no piensa utilizar la función de análisis nulo basado en anotaciones , puede deshabilitarla en Eclipse.

Abra la configuración global o del proyecto y vaya a Java > Compiler > Warnings . En la categoría Null analysis , desmarque Enable annotation-based null analysis . Luego reconstruye el espacio de trabajo y esos errores no se mostrarán de nuevo.


La descripción del error se proporciona en el comentario de Stephan Herrmann. Hay un problema abierto de Eclipse para que este problema sea más fácil de usar.

La solución es incluir la siguiente dependencia:

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


Lo he resuelto cambiando la opción "Usar anotación predeterminada para especificaciones nulas"

He ingresado los dos nombres de clase:

javax.annotation.Nonnull javax.annotation.Nullable