2014-12-30 111 views
1

我想了解Java 8和Java 7之間的差異。目前我正在研究Java 8 forEach循環。Java 8 forEach無法解析爲變量

public class Main { 
    public static void main(String[] args){ 
     List<String> strings = Arrays.asList("hello","my","name","is","test"); 
     strings.stream().forEach(s -> System.out.println(s)); 
    } 
} 

此代碼生成以下錯誤對我來說:

Exception in thread "main" java.lang.Error: Unresolved compilation problems: 
s cannot be resolved to a variable 
Syntax error on token "-", -- expected 
s cannot be resolved to a variable 

at Main.main(Main.java:7) 

我相信,在JDK藏漢作爲JRE是Java 8,因爲compuler可以識別來自ListforEach方法,但而不是->參數。

+0

這會給你一個想法http://www.adam-bien.com/roller/abien/ entry/java_8_from_a_for – Sorceri

+0

這聽起來像是一個Java 7與Java 8的錯誤。如果您運行'System.out.println(System.getProperty(「java.version」));'',程序的輸出是什麼? – wassgren

+0

我相信我知道發生了什麼事。 'System.getProperty()'輸出的JRE是'1.8.0_25'。但是,JDK是1.7。上帝知道Eclipse從哪裏設置。 –

回答

2

我通過重新安裝JRE,JDK並創建了一個全新的eclipse安裝來解決了這個問題。 顯然,舊日食仍然與Java 7 JDK的一些剩菜相關。

0

測試你的Java版本,在命令提示符 C:> Java的版本

如果給1.7那麼你的JDK不更新到1.8。

在Eclipse中,你可以Windows的>首選項> Java的>編譯器和編譯器選擇合規水平爲1.8