类文件有错误的版本52.0,应该是50.0

jay*_*yco 22 java intellij-idea

我正在尝试用IntelliJ构思编译我的项目.我正在外部jar文件中使用一个类,并在编译时收到上述错误.

据我所知,它说的是jar文件是使用比IntelliJ使用的Java版本更新的Java版本编译的.我的问题是如何使它们兼容?我已将Mac上的Java更新为1.8,当我运行java -versionjavac -version确认这一点时.

我错过了什么?(除了Java开发经验)

laf*_*ste 39

如果错误来自外部依赖项( Maven / Gradle ),则您导入的版本需要更新的 JDK。(例如,您导入了需要Java\xc2\xa011的Caffeine 3.0.x ,但您正在使用Java\xc2\xa08

\n

解决方案:将依赖降级到与您的JDK兼容的最新版本。

\n

Java 版本号可以在Java 类文件 wiki 页面中找到(字节偏移 6-7)。

\n


小智 15

检查错误中显示的 Java 版本:

\n
    \n
  • 45 = Java 1.1
  • \n
  • 46 = Java 1.2
  • \n
  • 47 = Java 1.3
  • \n
  • 48 = Java 1.4
  • \n
  • 49 = Java 5
  • \n
  • 50 = Java 6
  • \n
  • 51 = Java 7
  • \n
  • 52 = Java 8
  • \n
  • 53 = Java 9
  • \n
  • 54 = Java 10
  • \n
  • 55 = Java 11
  • \n
  • 56 = Java 12
  • \n
  • 57 = 爪哇 13
  • \n
\n

在program files/Java 文件夹中安装/下载该JDK。

\n

在 Eclipse 或 STS 中,右键单击项目 \xe2\x86\x92构建路径\xe2\x86\x92\xe2\x86\x92 添加 JRE 系统库 \xe2\x86\x92 添加错误中显示的 JDK 版本备用 JRE。

\n

在此输入图像描述

\n


Vla*_*eys 13

选择"文件" - >"项目结构".

在"项目设置"下选择"项目"

从那里你可以选择"Project SDK".

  • 如果使用 Gradle,除了上述设置外,还请选择适当的 Gradle JVM 设置。对于 IntelliJ IDE,其选项卡如下:“IntelliJ IDEA”->“构建、执行、部署”-> Gradle,并在“Gradle 项目”下更新 Gradle JVM (6认同)
  • 想知道这个步骤如何回答问题,因为这只是使用另一个 SDK 的问题,而不是真正提出的问题 (2认同)

Cod*_*ess 10

这意味着您的Java运行时版本是1.8,但您的编译器版本(javac)是1.6.要简单地解决它,只需将Java版本从1.8撤回到1.6即可.

但是,如果您不想更改Java运行时版本,请执行以下步骤:

  1. JAVA_HOME ="你的jdk v1.8文件夹路径",以确保jdk也是v1.8并再次使用java -version和javac -version来确保它
  2. 确保IntelliJ的编译器模式设置为符合v1.6但是我已经尝试过了.它没有解决我的问题.

  • "这意味着你的java运行时版本是1.8,但你的编译器版本(javac)是1.6.要简单地解决它,只需将java版本从1.8撤回到1.6." - 相反 (3认同)
  • 我根据@KrzystofWolny 的评论更正了答案。另请参阅/sf/answers/328492041/ (2认同)

Maj*_*aei 8

.class通常,当您尝试运行使用其他版本的 Java 编译的文件时,会发生这种错误。

\n

在您的情况下,它是使用Java\xc2\xa08 (主要版本 -> 52)编译的,并且您希望使用Java\xc2\xa06(主要版本 -> 50)运行它。

\n

以下是 Java 和 SE 版本的主要版本列表:\n类文件格式主要版本

\n

要解决此问题,请根据您的项目结构使用相同版本的已编译类文件。\n在 IntelliJ IDEA 中:菜单文件\xe2\x86\x92项目结构\xe2\x86\x92项目\xe2\x86\x92项目软件开发工具包

\n

如果使用像Maven这样的构建工具,也应该在相应的设置中更改此配置。以下是如何在POM文件中完成此操作的示例:

\n
<properties>\n    <java.version>11</java.version>\n    <maven.compiler.source>${java.version}</maven.compiler.source>\n    <maven.compiler.target>${java.version}</maven.compiler.target>\n</properties>\n
Run Code Online (Sandbox Code Playgroud)\n


use*_*194 5

由于尝试使用Java\xc2\xa08编译我的项目失败,然后重新尝试使用Java\xc2\xa06编译,我遇到了与标头中相同的错误。

\n

某些类在第一次尝试时使用 Java\xc2\xa08 进行编译,但未使用 Java\xc2\xa06 重新编译。混合类当时无法编译。清理项目解决了这个问题。

\n

这个答案与问题并不严格相关,但它可能对某人有用。

\n

  • 清洁项目不适合我。我刚刚删除了引发错误的类,并进行了干净的构建以使它们通过 1.6 进行编译。这解决了我的问题。 (2认同)

归档时间:

查看次数:

72489 次

最近记录:

7 年,5 月 前