hadoop集群运行jar包报错(eclipse导jar)

报错日志:

Exception in thread "main" java.lang.UnsupportedClassVersionError: com/hdfs/wordcount/WordcountDriver has been compiled by a more recent version of the Java Runtime (class file version 53.0), this version of the Java Runtime only recognizes class file versions up to 52.0

注:可能数字是52和51,但问题是一样的


使用的工具:centos7minimal,Linux下jdk版本是:

java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)

windows下jdk版本与Linux下一致一致

C:\Users\york>java -version
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)

问题分析:

  • 1.可能是Linux下jdk版本和windows下jdk版本差异太大(如1.6和1.8)
  • 2.可能是Linux下jdk环境变量配置不完善
  • 3.可能是hadoop集群配置文件不完善

尝试解决:

  • 通过问题查询,许多方式是通过更改compiler level来更改,因为**修改Compiler compliance level为对应的级别即可。Eclipse对java项目的编译并不是使用JDK完成的,是通过自带的ECJ(Eclipse Compiler for Java)来实现的,这也就解释了为什么你本地安装的JDK或启动Eclipse是在配置文件中通过-vm参数设置的jdk或新建项目时选择的JDK的版本为1.6时,在这里的编译级别却可以选为1.7或1.8的原因,因为所能编译的最高级别跟那些JDK根本没有关系,是由eclipse版本决定的。如果你的Eclipse在这个选项里没有你需要的级别,可以尝试着升级高版本来实现。**可以参考:https://blog.csdn.net/zcdyx88/article/details/53928383/
    此方法可以解决部分电脑出现上面的报错日志的问题,但测试过此方法后导出jar包,集群运行jar包时仍然报此错误。
    原因是开发环境配置不一致。

完善的解决方案:

  • 1.首先检查Linux下jdk的环境变量是否正确
  • 2.hadoop集群配置文件是否完善
  • 3.更改compiler level,设置的编译级别最好与Linux下jdk版本一致(比如都为1.8或者1.7)
  • 4.最重要的一步,如果以上方式检查都正常,但导出的jar在集群上运行仍然报错,检查项目的properties属性
    第一步:选中项目右键
    在这里插入图片描述
    第二步:确定项目编译的版本设置,最好与集群jdk版本一致,也可以比集群jdk低一版(eclipse设置compiler level后会检测项目的java compiler然后进行编译)
    在这里插入图片描述
    第三步:确定后重新导出jar包,部署集群运行,成功
总结:jdk版本使用,稳定版使用1.8居多,集群jdk版本最好与客户端jdk版本一致(windows下)或者比集群低一个版本,如1.7
  • 此问题同样适用于其他java项目

猜你喜欢

转载自blog.csdn.net/yhblog/article/details/84336409