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

我正在尝试编译我的项目在 IntelliJ 的想法。我在一个外部 jar 文件中使用一个类,在编译时收到以下错误。

Class file has wrong version 52.0, should be 50.0

我知道它说的是 jar 文件是用比 IntelliJ 更新的 Java 版本编译的。我的问题是如何使它们兼容?我已经把 Mac 上的 Java 升级到了1.8,当我运行 java -versionjavac -version时,它确认了这一点。

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

271909 次浏览

选择「档案」-> 「专案结构」。

在“项目设置”下选择“项目”

从那里您可以选择“ ProjectSDK”。

这意味着 Java 运行时版本是1.6,而编译器版本(javac)是1.8。要简单地解决这个问题,只需将 JVM 版本提升到1.8。

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

  1. JAVA_HOME= "your jdk v1.8 folder path",确保 jdk 也是 v1.8,并再次使用 java -versionjavac -version来确保它
  2. 确保 IntelliJ 的编译器模式设置为与 v1.6兼容 But i have tried that. it didn't solve my problem.

我面临同样的问题“类文件有错误的版本52.0,应该是50.0”时,运行 java 通过蚂蚁... 我所做的一切是添加 Fork = “ true”无论我使用的 Javac任务,它的工作..。

已经得到了相同的错误,因为尝试编译我的项目失败,然后重新尝试编译与 java 6。有些类在第一次尝试用8编译时没有用6重新编译。当时没有编译混合类。清洁工程解决了这个问题。 这个答案与问题严格相关,但可能对某人有用。

在 IntelliJ 中,可以找到 tools.jar,并将其替换为来自 yout JDK8的 tools.jar

如果使用 javac编译,并且得到这个错误,那么 删除所有 .class文件

rm *.class     # On Unix-based systems

and recompile.

javac fileName.java

如果错误来自 外部依赖性(maven/gradle) ,则导入的版本需要更新的 jdk (例如,你进口的咖啡因3.0. x 需要 java 11,但你使用的是 java 8。)

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

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

如果在 IntelliJ 中出现问题,则在终端(而不是在 IntelliJ 终端)中执行此操作- 1. 将 java 版本更改为适当的版本(在我的例子中,使用 jdk 1.4作为问题是 class file has wrong version 55.0, should be 52.0) 2. java -Dspring.profiles.active=test -jar build/libs/<jarname>.jar
run this

通常,当您尝试运行使用另一个版本的 java 编译的 .class文件时,会发生这种错误。 in your case, it is compiled with java 8 (major version -> 52) and you want to run it with java 6 (major version -> 50).

下面是 Java 和 SE 版本的主要版本列表: https://docs.oracle.com/javase/specs/jvms/se17/html/jvms-4.html#jvms-4.1-200-B.2

若要解决此问题,请根据项目结构使用相同版本的已编译类文件。 in Intellij Idea: File | Project Structure | Project | Project SDK

在使用构建器工具(如 maven)的情况下,还应该在相应的设置中更改此配置。下面是如何在 pom文件中完成的示例:

<properties>
<java.version>11</java.version>
<maven.compiler.source>${java.version}</maven.compiler.source>
<maven.compiler.target>${java.version}</maven.compiler.target>
</properties>

这个错误意味着你可能有用 Java11编译的依赖项,但是你使用的是 Java8,所以你有两个选择,要么迁移到 Java11,要么让库开发者为你提供 Java8版本。

类52的版本是 Java 8。您需要 Java11。

I installed a new JDK version but forgot to set the JAVA_HOME environment variable to the new JDK. Setting it to the correct version helped!