我在做mapreduce编程的时候,出现了如下的错误:
弄了好长时间才知道问题在于用较高版本的jdk编译的class文件在低版本的JVM上运行所导致的,通俗讲就是编译运行版本不匹配。
解决方法:在Windows操作系统中可以先查看java版本和javac版本(-version查看),如果不一致,重新配置环境变量;如果一致,则证明编译的时候是用的编译器编译的例如eclipse等,因为编译器自带javac,所以不会用到系统中的javac去编译。
前面我就是用的eclipse编译的,然后在Linux系统中去运行,Linux中的java版本是1.7
但是eclipse中的javac版本比1.7要高,所以需要修改eclipse中的javac版本。
修改方式:右击创建的项目>点击Properties>java compiler>Enable project specific settings >把compiler compliance level设置为1.7,与JVM版本一致。
到此,问题得以解决,希望对大家有帮助!