不支持的major.minor版本52.0

时间:2014-03-18 19:40:48

标签: java applet version unsupported-class-version

图片:

Command Prompt showing versions 命令提示符显示版本

Picture of error 错误图片

Hello.java

import java.applet.Applet;
import java.awt.*;

public class Hello extends Applet {

    // Java applet to draw "Hello World"
    public void paint (Graphics page) {
        page.drawString ("Hello World!", 50, 50);
    }
}

的Hello.html

<HTML>
    <HEAD>
        <TITLE>HelloWorld Applet</TITLE>
    </HEAD>

    <BODY>
        <APPLET CODE="Hello.class" WIDTH=300 HEIGHT=150>
        </APPLET>
    </BODY>
</HTML>

错误

Hello : Unsupported major.minor version 52.0

问题可能是什么?

26 个答案:

答案 0 :(得分:549)

问题是由于Java版本不匹配。参考Wikipedia Java Class Reference

  • Java SE 12 = 56(0x38 hex)
  • Java SE 11 = 55(0x37 hex)
  • Java SE 10 = 54
  • Java SE 9 = 53
  • Java SE 8 = 52
  • Java SE 7 = 51
  • Java SE 6.0 = 50
  • Java SE 5.0 = 49
  • JDK 1.4 = 48
  • JDK 1.3 = 47
  • JDK 1.2 = 46
  • JDK 1.1 = 45

这些是指定的主要数字。关于不受支持的major.minor版本的错误是因为在编译期间您在运行时使用更高的JDK和更低的JDK

因此,'major.minor版本52.0'错误可能是因为jar是在JDK 1.8中编译的,但是您尝试使用JDK 1.7环境运行它。报告的数字是必需的号码,而不是您使用的号码。要解决这个问题,最好让JDK和JRE指向相同的版本。

在IntelliJ IDEA中,

  1. 转到 Maven设置 Maven 导入。将导入程序的JDK设置为1.8。
  2. 转到 Maven设置 Maven Runner 。将JRE设置为1.8。
  3. 转到菜单文件*→项目结构 SDKs 。确保JDK主路径设置为1.8。
  4. 重启IntelliJ IDEA。

    另一种可能有用的方法是指示IntelliJ IDEA启动哪个JDK版本。

    转到: / Applications / IntelliJ \ IDEA \ 15 \ CE.app/Contents/Info.plist 并用以下代码替换JVM版本:

    <key>JVMVersion</key>
    <string>1.8*</string>
    

答案 1 :(得分:88)

解决该问题的智能方法是使用最新的SDK进行编译,并在编译时使用cross compilation options。要完全正确使用选项,需要目标版本的JRE(非JDK )的rt.jar

鉴于该applet的性质,它看起来可以编译为与Java 1.1一起使用。

答案 2 :(得分:62)

您需要在IDE中将编译器合规性级别更改回1.7。

这可以在IDE的首选项设置中完成。例如,在Eclipse中转到菜单 Windows 首选项,选择Java,然后展开它。然后选择编译器并将合规性级别更改为1.7。我相信这会从那里起作用。

答案 3 :(得分:50)

您必须使用相同版本的Java运行和编译您的应用程序。

如果你正在使用Eclipse,你应该做两件事:

  1. 在Eclipse中,单击&#34; Window&gt;首选项&#34; ,在左侧显示的窗口中,在&#34; Java&#34; 下,单击&#34;已安装的JRE&# 34; ,单击&#34;添加...&#34; 并导航到包含JDK的文件夹。

  2. 右键单击您的项目并单击&#34; Properties&#34; ,在出现的窗口中,单击&#34 ; Java编译器&#34; 并取消选中&#34;在Java Build Path&#34; 上使用执行环境中的合规性,这允许您在列表中选择& #34;编译器编制级别&#34; 与您在上一步中设置的版本相同。

答案 4 :(得分:25)

您需要将Java版本升级到Java 8.

下载最新的Java档案

从官方下载页面下载最新的Java SE Development Kit 8版本,或使用以下命令从shell下载。

对于64位

 # cd /opt/

 # wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u51-b16/jdk-8u51-linux-x64.tar.gz"

 # tar xzf jdk-8u51-linux-x64.tar.gz

对于32位

 # cd /opt/

 # wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u51-b16/jdk-8u51-linux-i586.tar.gz"

  # tar xzf jdk-8u51-linux-i586.tar.gz

注意:如果上述wget命令对您不起作用,请观看此示例视频以使用终端下载Java源存档。

使用替代方法安装Java

解压缩归档文件后,使用alternatives命令进行安装。可以在chkconfig包中找到alternatives命令。

 # cd /opt/jdk1.8.0_51/

 # alternatives --install /usr/bin/java java /opt/jdk1.8.0_51/bin/java 2

 # alternatives --config java

此时Java 8已成功安装在您的系统上。我们还建议使用替代方法设置javac和jar命令路径:

 # alternatives --install /usr/bin/jar jar /opt/jdk1.8.0_51/bin/jar 2

 # alternatives --install /usr/bin/javac javac /opt/jdk1.8.0_51/bin/javac 2

 # alternatives --set jar /opt/jdk1.8.0_51/bin/jar

 # alternatives --set javac /opt/jdk1.8.0_51/bin/javac

检查已安装的Java版本

使用以下命令检查已安装的Java版本。

root@tecadmin ~# java -version

java version "1.8.0_51"
Java(TM) SE Runtime Environment (build 1.8.0_51-b16)
Java HotSpot(TM) 64-Bit Server VM (build 25.51-b03, mixed mode)

配置环境变量

大多数基于Java的应用程序使用环境变量来工作。使用以下命令设置Java环境变量:

设置JAVA_HOME变量

# export JAVA_HOME=/opt/jdk1.8.0_51
Setup JRE_HOME Variable

# export JRE_HOME=$JAVA_HOME/jre
Setup PATH Variable

# export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

请注意,对PATH变量的更改首先放置新的Java bin文件夹,以便它们覆盖路径中的任何现有java / bin。在您的路径中留下两个java / bin文件夹有点草率,因此建议您将它们作为单独的任务进行清理。

此外,将所有上述环境变量放在/etc/environment文件中,以便在系统启动时自动加载。

答案 5 :(得分:22)

我遇到了同样的问题...... JDK和插件版本冲突。

我使用1.8 ...最新的编译,并且该消息开始出现。 所以我搜索了JRE 7(http://www.oracle.com/technetwork/java/javase/downloads/server-jre7-downloads-1931105.html)......并再次安装...... 现在1.8和1.7在同一台计算机上。

使用NetBeans,编译和定位到1.7版,解决了我的问题。

答案 6 :(得分:19)

如果您在Android Studio中遇到问题且安装了Android N,请将Android渲染版本更改为旧版本,问题将会消失。

Enter image description here

答案 7 :(得分:17)

如果您正在使用NetBeans IDE,请右键单击该项目并选择属性并转到 sources ,然后您可以将源/二进制格式更改为降低JDK版本。

Enter image description here

答案 8 :(得分:13)

当您尝试将使用Java 1.8编译器编译的类运行到较低的JRE版本时,会出现不支持的major.minor版本52.0,例如: JRE 1.7或JRE 1.6。解决此错误的最简单方法是安装最新的Java版本,即Java 8并运行您的程序。

了解详情:http://javarevisited.blogspot.com/2015/05/fixing-unsupported-majorminor-version.html#ixzz4AVD4Evgv

答案 9 :(得分:11)

当您在java的higher version上编译项目(比如jdk 1.8)然后在lower version(比如jdk 1.7)上运行它时会发生这种情况。

如果您的项目路径中有JRE-1.7库,那么

1.右键单击项目

2.转到属性

3.选择项目构面

4.在行中查找Java,然后选择 version (比如1.7),如果使用JRE-1.7

5.单击应用并运行您的项目。

答案 10 :(得分:10)

我通过删除旧版本的JRE并安装JRE 8解决了我的问题。

答案 11 :(得分:10)

我可以使用以下解决方案解决同样的问题。

在我的项目中,我添加了一个用Java 8创建的JAR文件。我的项目是指JRE 7.当我将项目JRE更改为8时,我的问题就解决了。

步骤:

在Eclipse中,右键单击项目浏览器中的项目名称→构建路径→库→单击JRE版本→单击编辑已安装的JRE →添加→标准VM →选择JRE主点击路径(路径应为localePath\java\jdk1.8.0_25\jre)→提供名称→保存→为项目选择相同的JRE→完成→确定。刷新/构建项目→尝试运行Java文件。它应该工作。

答案 12 :(得分:9)

我有Java 1.7&amp;安装1.8(使用SBT 2.4,需要Java 1.8)。 即使我的项目链接到Java 1.8,我也必须将JAVA_HOME环境变量更改为1.8。 最后,问题解决了。

答案 13 :(得分:6)

如果您使用的是Eclipse,请确保您的菜单项目属性 Java构建路径 JRE系统库符合您的项目要求(如图所示)。

Enter image description here

答案 14 :(得分:6)

解决问题所需要做的就是......确保您的Java版本在编译和运行时都是相同的。无论您使用什么工具或IDE。

答案 15 :(得分:5)

如果您使用的是Linux并且安装了不同版本的Java,请使用以下命令:

sudo update-alternatives --config java

这将提供在系统上安装的Java版本之间切换的快速方法。通过选择Java 8,我将解决您的问题。

答案 16 :(得分:5)

当我安装一个全新的Java 1.8时,这种情况发生在我身上,但是旧的命令行解释器已经打开了。

它有一条旧路径并继续使用Java 1.7执行应用程序,而项目已经使用Java 1.8构建。

答案 17 :(得分:4)

如果您的JDK版本是正确的。可能导致此错误的另一个原因是您的Android Studio版本较低,但您的Gradle版本过高。 Upgrade your IDE to a newer version可能有助于此。

答案 18 :(得分:3)

您需要使用JDK 1.7.0而不是JDK 1.8.0。

要确保它,您需要删除计算机上的JDK 1.8.0。

如果您使用Mac,则需要删除:

/Library/Java/JavaVirtualMachines/jdk.jdk

/Library/PreferencePanes/JavaControlPanel.prefPane

/ Library / Internet Plug-Ins / JavaAppletPlugin.plugin

然后,您需要重新安装JDK 1.7.0,并且您将成功生成.jar文件。

答案 19 :(得分:3)

如果您正在使用Eclipse v4.4(Luna)并且已经完成上述所有步骤,则可能需要检查运行配置设置。

可能有多种可能导致此错误。根本原因是项目需要在JDK1.8 / JRE8中编译时不匹配,而环境编译器是JDK1.7 / JRE7。

您可以查看my blog post以完成所有设置。

答案 20 :(得分:3)

将您的安道尔版本升级到JDK 1.8。

这是版本不匹配,您的编译器正在寻找Java版本8并且您拥有Java版本7.

你可以在版本8中运行版本7中的应用程序版本,但是你不能反过来,因为当涉及更高级别时,版本嵌入了更多的功能,增强功能而不是以前的版本。

Download JDK version from this link

并设置此

的JDK路径

答案 21 :(得分:1)

我在Mac OS X v10.9(小牛队)的Eclipse中遇到了这个问题。我在Stack Overflow上尝试了很多答案...最后,经过一整天我 *安装了新版本的Android SDK(并更新了Eclipse,菜单 Project Properties Android 使用新路径)*

我必须获得SDK更新,但只删除我认为必要的更新,避免我没有使用的API(比如Wear和TV).. 这就是诀窍 即可。显然,似乎我在整个过程中某处损坏了我的SDK。

BTW ..我确实看到错误重新出现在我的工作区中的一个项目,但它似乎与appcompat-7的导入相关,我没有使用它。在完成该项目之后,到目前为止还没有看到问题重新出现。

答案 22 :(得分:1)

只需转到http://java.com/en/download/并更新您的JRE版本

答案 23 :(得分:0)

如果您使用IntelliJ IDEA,请转到项目结构( Ctrl + Alt + Shift + S < / kbd>),您可以更改项目的JDK。

答案 24 :(得分:0)

只想添加此内容。我今天遇到了这个问题。调整了我的项目中的设置,重建和相同的问题。我(错误地)认为更改项目(Eclipse)中的设置会导致我的项目所依赖的项目也被重新编译。 调整依赖关系树中所有项目的设置解决了这个问题。

答案 25 :(得分:0)

这些答案都没有帮助我,但我找到了解决办法 我有一个在Wildfly 8.2中使用的webproject,使用Maven构建,源代码和目标在maven-compiler-plugin上设置为1.8,并且所有Eclipse和Maven设置都设置为Java 1.8。 问题是Wildfly 8.2无法处理Java 1.8,因此我必须将所有内容设置为1.7并且它能够正常工作。