关于java:不支持的major.minor版本52.0

Unsupported major.minor version 52.0

本问题已经有最佳答案,请猛点这里访问。

图片:

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

Picture of error错误图片

程序过程

1
2
3
4
5
6
7
8
9
10
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);
    }
}

HTML

1
2
3
4
5
6
7
8
9
10
<HTML>
    <HEAD>
        HelloWorld Applet
    </HEAD>

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

误差

1
Hello : Unsupported major.minor version 52.0

问题可能是什么?


这个问题是因为Java版本不匹配。参考维基百科Java类参考:

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

这些是指定的主要号码。与不受支持的major.minor版本相关的错误是因为在编译期间,您在运行时使用的是较高的JDK和较低的JDK。

因此,"major.minor version 52.0"错误可能是因为JAR是在JDK1.8中编译的,但您正试图使用JDK1.7环境运行它。报告的号码是必需的号码,而不是您正在使用的号码。为了解决这个问题,最好让JDK和JRE指向相同的版本。

在intellij思想中,

  • 转到maven settings→maven→importing。将导入程序的JDK设置为1.8。
  • 转到maven settings→maven→runner。将JRE设置为1.8。
  • 转到菜单文件*→项目结构→SDK。确保JDK主路径设置为1.8。
  • 重新启动Intellij IDEA。

    另一种可能有帮助的方法是通过指示Intellij概念启动哪个JDK版本。

    转到:/applications/intellijidea15ce.app/contents/info.plist并将JVM版本替换为:

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


    解决这个问题的明智方法是使用最新的SDK进行编译,并在编译时使用交叉编译选项。要完全正确地使用这些选项,需要目标版本的JRE(不是JDK)的rt.jar

    考虑到Applet的本质,它看起来可以被编译成与Java 1.1一起使用。


    您需要在您的IDE中将编译器遵从性级别改回1.7。

    这可以在IDE的首选项设置中完成。例如,在Eclipse中,进入菜单窗口>首选项,选择Java,并展开它。然后选择编译器并将符合性级别更改为1.7。我相信从那以后这会奏效的。


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

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

  • 在Eclipse中,单击"Window >首选项",在出现的窗口左侧,在"Java"下,单击"安装的JRE",点击"Add…"并导航到包含JDK的文件夹。

  • 右键单击项目并单击"属性",在出现的窗口中,在左侧单击"Java编译器",并取消"使用Java构建路径上的执行环境的符合性",这允许您在列表"编译器编译级别"中选择与前一步中所设置的版本相同的版本。


  • 您需要将Java版本升级到Java 8。

    下载最新的Java存档从它的官方下载页面下载最新的Java SE开发工具包8版本,或者使用以下命令从shell下载。64位

    1
    2
    3
    4
    5
     # 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位

    1
    2
    3
    4
    5
     # 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

    提取存档文件后,使用alternates命令安装它。chkconfig包中提供了alternates命令。

    1
    2
    3
    4
    5
     # 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命令路径:

    1
    2
    3
    4
    5
    6
    7
     # 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版本。

    1
    2
    3
    4
    5
    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变量

    1
    2
    3
    4
    5
    6
    7
    # 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

    注意,路径变量的更改首先将新的Java bin文件夹放置在路径中,以重写任何现有的Java/bin。将两个Java/bin文件夹放在您的路径中是有点草率的,因此建议您将它们作为单独的任务清理。

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


    我也有同样的问题…JDK和插件版本冲突。

    我用1.8编译…最新的一个,并且那个消息开始出现。因此,我已经搜索了JRE 7(http://www. Oracle)/TeaTeWorks/Java/javase/下载/服务器-jRe7下载-1931 105.html)…并安装了它…再一次。。。现在1.8和1.7在同一台计算机中。

    使用NetBeans,编译并瞄准1.7版,解决了我的问题。


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

    Enter image description here


    如果您使用的是NetBeans IDE,右键单击该项目,选择属性并转到源代码,您可以将源代码/二进制格式更改为较低的JDK版本。

    Enter image description here


    当您尝试使用Java 1.8编译器编译的类进入较低JRE版本(例如JRE 1.7或JRE 1.6)时,未支持的Maun.Unand版本52会出现。修复这个错误的最简单方法是安装最新的Java版本,即Java 8并运行程序。

    阅读更多:http://javarevisited.blogspot.com/2015/05/fixing unsupported majorMinor version.html ixzz4avd4evgv


    当您在Java的EDCOX1(0)中编译您的项目时(JDK 1.8),然后在EDCOX1 1中运行它(JDK 1.7)。

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

    1.右键单击项目

    2.转到属性

    3.选择项目方面

    4、如果使用JRE 1.7,则在行中找到Java,然后选择版本(如1.7)

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


    我可以使用下面的解决方案来解决相同的问题。

    在我的项目中,我添加了Java& Nbsp 8中创建的JAR文件。我的项目是指JRE 7。当我把JRE项目改为8时,我的问题解决了。

    步骤:

    在Eclipse中,右键单击Project Explorer中的项目名称→构建路径→库→单击JRE版本→单击编辑→已安装JRE→添加→Standerd VM→选择JRE Home单击路径(路径应为localePath\java\jdk1.8.0_25\jre)→提供名称→保存→为项目选择相同的JRE→完成→ok。刷新/生成项目一次。尝试运行Java文件。它应该起作用。


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


    我安装了Java 1.7和1.8(SBT 2.4需要Java 1.8)。即使我的项目被链接到Java 1.8,我必须将JavaHOAD环境变量更改为点1.8。最后,问题解决了。


    如果您正在使用Eclipse,请确保菜单项目"属性"、"Java构建路径"、"库"、"JRE"系统库与项目要求(如图像中所示)相匹配。

    Enter image description here


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


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

    1
    sudo update-alternatives --config java

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


    当我安装了一个新的Java 1.8时,就发生了这个问题,但是让旧的命令行解释器打开了。

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


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


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

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

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

    /Cultual/Java/JavaVitualMadio/JDK.JDK

    /库/首选项窗格/javacontrolpanel.prefpane

    /library/internet插件/javaappletplugin.plugin

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


    如果您正在使用Eclipse v4.4(luna),并且已经完成了上面提到的所有步骤,那么您可能需要检查您的运行配置设置。

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

    你可以查看我的博客文章,查看你的所有设置是否正确。


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

    这是一个版本不匹配,你的编译器正在寻找Java版本8,你有Java版本7。

    您可以在版本8的版本7中运行应用程序内部版本,但不能反过来运行,因为在更高的级别上,版本嵌入了更多的功能、增强功能,而不是以前的版本。

    从此链接下载JDK版本

    并为此设置JDK路径


    我在Mac OS X v10.9(Mavericks)上的Eclipse中遇到了这个问题。我在堆栈溢出时尝试了许多答案…最后,在一整天之后,我*安装了新版本的Android SDK(并更新了Eclipse,菜单项目→属性→Android以使用新路径)*。

    我必须获得sdk更新,但只需要删除那些我认为必要的更新,避免使用我没有使用的API(如wear和tv)。这就成功了。很明显,我好像在一路上的某个地方损坏了我的SDK。

    顺便说一句。。我确实看到了在我的工作区中的一个项目重新出现的错误,但它似乎与我没有使用的AppCompat-7的导入有关。在研究了那个项目之后,到目前为止还没有看到这个问题再次出现。


    只需访问http://java.com/en/download/并更新JRE版本即可。


    只想添加这个。我今天有这个问题。调整了我的项目中的设置,重新构建,以及相同的问题。我(错误地)假设更改项目中的设置(Eclipse)也会导致重新编译项目所依赖的项目。在依赖树上调整所有项目的设置解决了这个问题。


    这些答案对我没有帮助,但我找到了解决办法。我在WaveRead 8.2中使用了Maven构建的WebStudio,源代码和目标在Maven编译器插件中设置为1.8,并且所有的Eclipse和Maven设置都被设置为Java 1.8。问题是野飞8.2不能处理Java 1.8,所以我不得不把所有的东西设置为1.7,它工作了。


    如果您使用Intellij思想,请转到项目结构(ctrl+alt+shift+s),然后可以更改项目的JDK。