【问题标题】:Why source is 1.6 if I'm using 1.8 [duplicate]如果我使用的是 1.8,为什么源是 1.6 [重复]
【发布时间】:2017-07-22 20:38:03
【问题描述】:
就像标题一样,我正在尝试编译 lambda,我使用的是 1.8 jdk,但不知道。
此处的错误日志:
证明我真的得到了 1.8:
第 1 部分:
第 2 部分:
任何想法为什么我会遇到这样的问题,lambda 看起来像这样,但我确信它很好,因为我正在编写教程中的代码。
public Topic getTopic(final String id){
topics.stream().filter(t -> t.getId().equals(id)).findFirst().get();
}
我试图找到解决方案但真的失败了,这就是我在这里写的原因。
附言。对不起我的英语不好:)
【问题讨论】:
标签:
java
spring
lambda
java-8
【解决方案1】:
您使用的是 Java 8 JDK,但您项目的语言源代码级别仍设置为 Java 6(可能是为了兼容性)。因此,JDK 8 javac 在 Java 6 的兼容模式下被调用,这会导致它拒绝您的代码,因为它使用了 Java 8 功能。您可能想在项目设置或pom.xml 中修复语言级别,然后重新编译。
您可以编辑您的pom.xml 来解决此问题。有关如何执行此操作的详细信息,请参阅Maven docs,但您可能想要这个:
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>