ChatGPT解决这个技术问题 Extra ChatGPT

不支持的major.minor 52.0版[重复]

这个问题在这里已经有了答案:How to fix java.lang.UnsupportedClassVersionError: Unsupported major.minor version (50 answers) Closed 6 years ago。

图片:

https://i.imgur.com/J6SWWBb.png

https://i.imgur.com/Xj8mCUp.png

你好.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);
    }
}

你好.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

问题可能是什么?

Java 版本不匹配。使用 JRE 8 执行。
请检查您的浏览器插件。
好吧,这表明您已经安装了 Java 8……它没有告诉我们您使用什么来在浏览器中运行小程序。
只需仔细检查您的系统环境变量 JDK_HOME 和 JRE_HOME 是否也指向 JAVA 1.8。
Java 向后兼容就这么多。

C
Captain Man

问题是因为 Java 版本不匹配。参考 JVM specification,以下是用于不同 Java 版本的类文件的主要版本。 (截至目前,所有版本都支持所有以前的版本。)

Java SE 版本 主要版本 1.0.2 45 1.1 45 (不是错字,相同版本) 1.2 46 1.3 47 1.4 48 5.0 49 6 50 7 51 8 52 9 53 10 54 11 55 12 56 13 57 14 58 15 59 16 60

这些是分配的主要号码。有关不支持的major.minor 版本的错误是因为在编译期间您使用的是更高的JDK 而在运行时使用的是更低的JDK。

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

在 IntelliJ IDEA 中,

转到 Maven 设置 → Maven → 导入。将导入程序的 JDK 设置为 1.8。转到 Maven 设置 → Maven → Runner。将 JRE 设置为 1.8。转到菜单文件* → 项目结构 → SDK。确保 JDK 主路径设置为 1.8。

重启 IntelliJ IDEA。

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

转到:/Applications/IntelliJ\ IDEA\ 15\ CE.app/Contents/Info.plist 并将 JVM 版本替换为:

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

“J2SE”仅在 Java 1.5 之前使用,现在称为“Java SE”,请参阅 en.wikipedia.org/wiki/Java_Platform,_Standard_Edition
最佳答案!!奇怪的是:我将我的替代方案设置为 JRE 7,并使用 JDK8 构建工具。在运行时它说“版本 52.0”不受支持。这可能意味着编译目标设置为java 8。Maven和我需要有话。
我有 javaHome=/Library/Java/JavaVirtualMachines/jdk1.8.0_112.jdk/Contents/Home,但仍然出现此错误。
如果我需要使用 1.7,如何从 Intellij IDEA 解决这个问题?从命令行一切正常
@YuriyYunikov 我现在也有同样的问题。如果你找到了出路,请告诉我。
C
Captain Man

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

鉴于该小程序的性质,它看起来可以编译为与 Java 1.1 一起使用,这意味着您将使用 javac -target 1.1


P
Peter Mortensen

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

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


S
Sk8erPeter

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

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

在 Eclipse 中,单击“Window > Preferences”,然后在出现的窗口左侧的“Java”下,单击“Installed JREs”,单击“Add...”并导航到包含JDK。右键单击您的项目并单击“属性”,在出现的窗口中,在左侧,单击“Java 编译器”并取消选中“使用 Java 构建路径上的执行环境中的合规性”,这允许您选择在“编译器编译级别”列表中与您在上一步中设置的版本相同。


第 2 步 +1,这很重要,也可以在 Window > Preferences > Java > Compiler 中全局(不仅仅是特定于项目)完成,您需要在其中将“编译器合规级别”设置为适当的版本。
请注意,在此处执行步骤 1 时,您可能希望也可能不想更改默认 JRE 诗句,只是为项目设置它。
P
Peter Mortensen

您需要将 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 包中提供了替代命令。

 # 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/bins。在路径中保留两个 java/bin 文件夹有点草率,因此建议您将它们作为单独的任务进行清理。

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


看起来OP正在使用Windows。不知道这些指示对他有什么用。
P
Peter Mortensen

我有同样的问题... 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 版,解决了我的问题。


您可以使用 1.8 来编译 1.7。
P
Peter Mortensen

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

https://i.stack.imgur.com/mn0Nk.png


我在使用带有 API 23 的 Build Tools 24.0.0-rcX 时得到了。应该使用 23.0.2
P
Peter Mortensen

如果您使用的是 NetBeans IDE,请右键单击项目并选择 Properties 并转到源,您可以将 Source/Binary Format 更改为较低的 JDK 版本。

https://i.stack.imgur.com/6O2jL.png


C:\Program Files\netbeans\etc\netbeans.conf 包含一个 netbeans_jdkhome
A
Akshay Vijay Jain

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

阅读更多:http://javarevisited.blogspot.com/2015/05/fixing-unsupported-majorminor-version.html#ixzz4AVD4Evgv


P
Prateek Joshi

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

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

1.右键项目

2.进入属性

3.选择项目方面

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

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


P
Peter Mortensen

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


P
Peter Mortensen

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

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

脚步:

在 Eclipse 中,右键单击项目资源管理器中的项目名称 → 构建路径 → 库 → 单击 JRE 版本 → 单击 EditInstalled JRE → 添加 → Standerd VM → 选择 JRE主页点击路径(路径应为 localePath\java\jdk1.8.0_25\jre)→ 提供名称 → 保存 → 为项目选择相同的 JRE → 完成 → OK。刷新/构建项目一次→尝试运行您的 Java 文件。它应该工作。


L
Lior Ohana

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


P
Peter Mortensen

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

https://i.stack.imgur.com/VrV5R.png


P
Peter Mortensen

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


你怎么检查?
你使用什么工具来编译和运行你的项目
我正在使用日食。我得到同样的错误。我正在使用 java 1.7.80。我到处检查过,版本是一样的。 Java 8 甚至没有安装在我的电脑上。
P
Peter Mortensen

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

sudo update-alternatives --config java

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


P
Peter Mortensen

当我安装一个新的 Java 1.8 时,我发生了这种情况,但让旧的命令行解释器保持打开状态。

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


P
Peter Mortensen

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


这是一个基本的想法,但有时当您专注于您甚至不考虑检查您的 IDE 版本的特定错误时,很容易获得隧道视野。注意:我远远落后,Android Studio 从来没有敦促我更新 (1.5 > 2.3)。我怀疑我在某些时候抑制了升级警告。
P
Peter Mortensen

将您的 Andorra 版本升级到 JDK 1.8。

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

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

Download JDK version from this link

并为此设置您的JDK路径


在这种情况下,什么是“安道尔”?你是说安卓吗?
P
Peter Mortensen

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

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

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

/库/Java/JavaVirtualMachines/jdk.jdk

/Library/PreferencePanes/JavaControlPanel.prefPane

/Library/Internet 插件/JavaAppletPlugin.plugin

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


P
Peter Mortensen

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

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

您可以检查 my blog post 以检查您的所有设置是否正确。


您已经链接到看起来不错的答案,但是在堆栈溢出时,我们需要详细信息而不仅仅是一个链接,以使这里的答案很棒。
B
Bevor

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


d
dexter

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


B
Bikey

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


P
Peter Mortensen

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


P
Peter Mortensen

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

我必须获得 SDK 更新,但只删除那些我认为必要的更新,避免使用我不使用的 API(如 Wear 和 TV).. 这样就成功了。显然,我似乎在途中的某个地方损坏了我的 SDK。

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