在IntelliJ的一个新项目中,我已经设置了Java 8 JRE/JDK和语言级别8.0。
但是由于某些原因,IDE无法找到java.util.Optional
。项目编译和工作正常(从IDE中也是如此),但代码完成不工作。
任何想法?
我终于想通了。无论出于何种原因,在Editor、General和Auto Import下的排除项中有一个关于java.util.Optional的条目。
去掉它就成功了。不知道它是怎么或者为什么会在那里。听起来不像是我想做的事。
愚蠢的IntelliJ。
我有一个SpringBoot项目,它工作得很好。然后,第二天,当我想运行它时,我得到了这个错误:Caused by: java.lang.Error: Unresolved compilation problem:
The type java.util.Optional cannot be resolved. It is indirectly referenced from required .class files
没有改变任何东西!
- 我清除了IntelliJ缓存。
虽然它是一个maven项目,但它已经使用了JDK8,
- 我已经改变了项目设置,并说(再次)使用JDK8,
- Maven重新导入,清理项目,构建->重建项目,它又神奇地工作了
我在ubuntu中也遇到过类似的问题。对我来说,问题是我使用JDK1.7,当我把它改成JDK1.8时,一切都工作得很好。
现在,这是有意义的,因为可选是在JDK1.8中引入的,在此之前,这个概念只存在于Guava中:http://onelineatatime.io/optional-guava-and-java-8/
在IntelliJ 2017.2.7中遇到了同样的问题,并像这样解决了它:Project Structure->Modules->Module SDK,然后改成1.8
我还首先将Java编译器设置为8,项目结构->项目->项目SDK和项目语言级别也设置为8,但没有成功。最后,我描述的步骤最终修复了它。
我最近遇到了这种情况。这个问题与我的项目SDK设置有关。不需要清除任何缓存
这个问题显示我的项目SDK设置为1.8(1.8.0_202)。该问题已通过将其更改为11(11.0.6)修复。我还确认,当我切换回1.8时,这个问题再次出现。
java 8中一些可选类的函数不支持,如isEmpty, ifPresentOrElse, or, stream, orElseThrow。你应该检查你是否使用它们。如果您想使用这些函数,可以使用java 11。