线程“main”java.lang.unsupportedclassversionerror中出现异常,不支持的主版本52.0

eagi6jfj  于 2021-06-03  发布在  Hadoop
关注(0)|答案(7)|浏览(462)

我试图在hadoop-1.0.4上运行wordcount示例,但出现以下错误:

Exception in thread "main" java.lang.UnsupportedClassVersionError: WordCount :
Unsupported major.minor version 52.0
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:791)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:264)
    at org.apache.hadoop.util.RunJar.main(RunJar.java:149)

我使用以下java版本:

java version "1.7.0_11"
Java(TM) SE Runtime Environment (build 1.7.0_11-b21)
Java HotSpot(TM) Server VM (build 23.6-b04, mixed mode)

另外,java7安装目录指示java7 home。
谢谢你的帮助。

mwyxok5s

mwyxok5s1#

似乎您正在使用jdk8进行编译,并在使用它的地方使用较低版本。
所以呢
假设使用eclipse, Window > Preferences > Compiler > compiler level 然后设置较低的级别(<当前级别)。

tgabmvqs

tgabmvqs2#

好吧,很明显那是行不通的!您正在较新的jdk上编译,并在较旧的jdk/jre上部署。您需要在旧的jdk上编译。

s3fp2yjn

s3fp2yjn3#

我也遇到了同样的问题。编译时应该使用相同的java版本,执行时应该使用相同或更高的版本,尽管反之亦然会导致此错误。如果您选中:
Window > Preferences > Compiler > compiler level java -version 两个版本都一样那你就可以走了。在eclipse中创建新项目时: File -> New -> Java Project 在jre check下使用执行环境

并设置为您的系统和您需要执行此项目的系统上的相同版本。

gzszwxb4

gzszwxb44#

好像有人用Java8编译器编译了一个类。用java7或更低的遵从性级别重新编译有问题的jar。

okxuctiv

okxuctiv5#

这个问题是由于.jsp文件是用比预期的编译器(7)更高的编译器(8)编译的。将所有编译级别更改为较低的编译级别(即7级),并更改.exe所在的同一文件夹中eclipse配置设置文件中给出的jdk路径。

gdx19jrr

gdx19jrr6#

我解决了同样的问题。我发现 JAVA_HOME 在我的 hadoop-env.sh/usr/lib/jvm/java-6-openjdk 但是 JAVA_HOME/etc/profile/usr/local/java/jdk1.8.0_25 .
在我改变之后 JAVA_HOME/etc/profile/usr/lib/jvm/java-6-openjdk 这和 hadoop-env.sh 使用 $source /etc/profile # to make /etc/profile effects 我的问题解决了!我希望这对你有帮助。

628mspwn

628mspwn7#

我想您已经得到了答案..只是补充一下,在eclipse的项目下有一个jre系统库[javase-1.x]文件夹。。右击它你会看到jre系统库屏幕。在那里你可以设置执行环境。

相关问题