2017-03-02 4 views
-1

タイトルのように、私はラムダをコンパイルしようとしています。私は1.8jdkを使用しています。私が1.8を使用している場合、ソースが1.6である理由

ここでエラーログ:私は本当に1.8を得た enter image description here

証明:

パート1:

enter image description here

その2: enter image description here

任意のアイデア私がきた理由このような問題があり、ラムダはthのように見える私はチュートリアルからコードをやっているので、その罰金は間違いないと確信しています。

public Topic getTopic(final String id){ 
    topics.stream().filter(t -> t.getId().equals(id)).findFirst().get(); 
} 

私は解決策を見つけようとしていましたが、実際には失敗したので、私はここに書いています。 ps。私の悪い英語を申し訳ありません:)

+0

外観をhttp://stackoverflow.com/questions/22703412/java-lambda-expressions-not-supported-at-this-言語レベル – pedroct92

答えて

2

あなたは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> 
関連する問題