Exception in thread "main" java.lang.UnsupportedClassVersionError: HDFS/hdfs has been compiled by a more recent version of the Java Runtime (class file version 59.0), this version of the Java Runtime only recognizes class file versions up to 52.0
我在Hadoop里面执行下面命令时报错。
./bin/hadoop jar ./myapp/hdfs.jar
问题展示:
[root@hadoop0 hadoop]# ./bin/hadoop jar ./myapp/hdfs.jar
Exception in thread "main" java.lang.UnsupportedClassVersionError: HDFS/hdfs has been compiled by a more recent version of the Java Runtime (class file version 59.0), this version of the Java Runtime only recognizes class file versions up to 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:468)
at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at org.apache.hadoop.util.RunJar.run(RunJar.java:214)
at org.apache.hadoop.util.RunJar.main(RunJar.java:136)
问题分析:
大体问题是JAVA版本不一致导致的。(class file version 59.0):对应的JDK版本是JDK 15。我的eclipse软件配置的是JDK15,而我Hadoop里配置的是JDK1.8_201。
JDK version和class file version(Class编译版本号)对应关系
下载内容来自https://blog.csdn.net/lzhfdxhxm/article/details/117018384
感谢这位网友
JDK 19 = 63,
JDK 18 = 62,
JDK 17 = 61,
JDK 16 = 60,
JDK 15 = 59,
JDK 14 = 58,
JDK 13 = 57,
JDK 12 = 56,
JDK 11 = 55,
JDK 10 = 54,
JDK 9 = 53,
JDK 8 = 52,
JDK 7 = 51,
JDK 6.0 = 50,
JDK 5.0 = 49,
JDK 1.4 = 48,
JDK 1.3 = 47,
JDK 1.2 = 46,
JDK 1.1 = 45.0-45.6
问题解决方法:
在eclipse里右击项目->Bulid Path->configure Build Path。打开下面窗口
然后打开“JRE System Library [JavaSE-1.8]”(如下图)
勾选Execution environment,下拉列表选中你本机上对应的版本(查看JAVA 版本方法:JAVA -version)
最后点一下Finish就行了
写的太着急了,友们顺便看看,能解决问题最好。没成功的@我,我看到就回复