2014-12-30 116 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