Java 8 Java 8 forEach无法解析为变量

Java 8 Java 8 forEach无法解析为变量,java-8,Java 8,我想了解Java8和Java7之间的区别。目前,我正在研究Java8forEach循环 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.print

我想了解Java8和Java7之间的区别。目前,我正在研究Java8
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));
    }
}

我确信JDK和JRE都是Java 8,因为计算机可以从
列表中识别
forEach
方法,但不能识别
->
参数。

我通过重新安装JRE、JDK解决了这个问题,并创建了一个全新的eclipse安装。
显然,旧的eclipse仍然与Java7JDK的一些遗留问题相关联。

在命令提示符下测试Java版本 c:>java版本

如果它给出1.7,那么您的JDK不会更新为1.8


在eclipse中,您可以使用windows->preferences->java->compiler并选择compiler compliance level为1.8,这会让您了解这听起来像是java 7 vs java 8的bug。如果运行
System.out.println(System.getProperty(“java.version”)),程序的输出是什么?我相信我知道发生了什么。JRE是由
System.getProperty()
输出的
1.8.0\u 25
。然而,JDK是1.7。天知道Eclipse的设置来自哪里。很好,问题解决了;)
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)