如果我使用的是 1.8,为啥源是 1.6 [重复]

Posted

技术标签:

【中文标题】如果我使用的是 1.8,为啥源是 1.6 [重复]【英文标题】: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();

我试图找到解决方案但真的失败了,这就是我在这里写的原因。 附言。对不起我的英语不好:)

【问题讨论】:

看***.com/questions/22703412/… 【参考方案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>

【讨论】:

以上是关于如果我使用的是 1.8,为啥源是 1.6 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

1.6-1.8

Intellij 选择 JDK 1.6 而不是 1.8

一周第二次课(1月23日) 1.6/1.7 配置IP 1.8 网络问题排查

指定的编译器合规性为 1.6,但使用了 JRE 1.8

Idea 不断将 Kotlin 的编译目标从 1.8 切换到 1.6

ubuntu 14.04 安装jdk 1.8