从你的报错来看,这是版本兼容性问题。Java由于已经发展这么多年,经历很多版本。就跟新的Windows 应用程序,不能在老的win98上跑是一样的。你写的Customer.java是Java程序的源代码文件,而源代码文件是不能直接运行的。
你用javac这个JDK命令,编译源代码文件,生成了一个Customer.class文件。在这个过程当中,需要指定class文件的编译版本(没有指定就默认当前),以保证兼容性。
你最后用调用 java Customer,实际上是运行Customer.class。在这里,java代表你运行时的JVM,这里的版本,应该大于或者等于你的class文件。
在这个过程当中,你编译的class版本如果高于运行时的虚拟机版本,就会报这个错。
报错信息显示,你编译的class文件version 是54,对应的是Java 10,这个是非常新的,还没有正式发布。而你运行时java 最高能到52,对应的是Java 8.
你可以分别用javac -version 和 java -version 检查一下版本是不是不一致。
现在有几种方法:修改环境变量,使得java运行版本也为Java 10,你有JDK 10,就应该有对应的JRE。
每次编译时,通过 javac -target 1.8 指定编译成老版本的class文件。当前环境直接运行。
卸载JDK 10,从新安装JDK 8.
一般来说,如果你是新机器安装一次JDK,不应该发生这种问题,你可能是以前安装过java然后现在又因为学习,又一次安装了最新的JDK吧。