'The type org.eclipse.jdt.annotation.NonNull cannot be resolved. It is indirectly referenced from required .class files
When I use the Java 8 method reference double colon operator (::) with new operator (e.g. MyType::new), I get this error in Eclipse of Spring Tool suite (STS):
The type org.eclipse.jdt.annotation.NonNull cannot be resolved. It is indirectly referenced from required .class files
How to get rid of this error?
Solution 1:[1]
Error description is provided in Stephan Herrmann's comment. There is open Eclipse issue to make this issue more user friendly.
Solution is to include following dependency:
<dependency>
<groupId>org.eclipse.jdt</groupId>
<artifactId>org.eclipse.jdt.annotation</artifactId>
<version>2.0.0</version>
</dependency>
Solution 2:[2]
Eclipse has a feature called annotation-based null analysis, which provides compile-time checks using annotations (e.g. @NonNull or @Nullable). You get this error when annotations are missing in the classpath.
If you don't plan to use the annotation-based null analysis feature, you can just disable it in Eclipse.
Open the global or project settings and go to Java > Compiler > Warnings. In the Null analysis category, uncheck Enable annotation-based null analysis. Then rebuild the workspace and those errors won't show again.
Solution 3:[3]
I have solved it by changing the "Use default annotation for null specifications"
I have enter the both class names:
javax.annotation.Nonnull
javax.annotation.Nullable
Solution 4:[4]
I was able to resolve this by adding a @NonNull annotation. It got underlined in red because the Eclipse annotations were not present. Hovering over the @NonNull gave me the option to "Fix Project Setup ...", and that cleared the error. Then I deleted the @NonNull.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | |
| Solution 2 | |
| Solution 3 | Horcrux7 |
| Solution 4 | cowang |
