问题标签 [unsupported-class-version]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
449 浏览

java - 为什么 Java 8 可以加载 Java 9 类?

我有以下设置:

A 类 - 使用 java 9 编译(类版本 53)
B 类 - 应该使用 java 8 编译(类版本 52)

B 类依赖于 A 类。

现在我得到了一个令人惊讶的结果:尽管它依赖于 Java 9 编译的 A 类,但我可以使用 Java 8 成功编译 B 类。

如果我使用 Java 10 或 Java 11 编译 A 类,然后尝试使用 Java 8 编译 B 类,我会收到预期的错误消息:

类文件有错误的版本 55.0(或 54.0),应该是 52.0

所以任何人都可以解释为什么我没有收到消息

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

如果我尝试将 Java 8 与 Java 9 类一起使用?

我使用这个java版本:

Java 8:Oracle jdk 1.8.0_144(安装在文件夹 d:\jdk8)
Java 9:Oracle jdk 9.0.1(安装在文件夹 d:\jdk9)
Java 11:Oracle jdk 11.0.1(安装在文件夹 d:\jdk11 )

为了演示它,我创建了这两个类文件:

文件 A.java:

文件 B.java:

首先 A.java 用 Ja​​va 9 编译:
d:\jdk9\bin>javac d:\test\A.java

然后 B.java 使用 Java 8 编译的使用 Java 9 编译的 A 类:
d:\jdk8\bin>javac -cp d:\test d:\test\B.java

警告:d:\test\A .class:主要版本 53 比 52 新,这是此编译器支持的最高主要版本。
建议升级编译器。
1 个警告

所以类文件编译成功,并带有警告。我刚刚通过手动调用编译器看到了这个警告。如果我使用 Maven 构建项目,则此警告不可见。

现在 Class A 使用 Java 11 编译(与 Java 10 相同):
d:\jdk11\bin>javac d:\test\A.java

如果我尝试编译 B 类,我得到一个错误:

d:\jdk8\bin>javac -cp d:\test d:\test\B.java

d:\test\B.java:3: error: cannot access A
A 类A = new A();
^
错误的类文件:d:\test\A.class
类文件的版本错误 55.0,应该是 52.0
请删除或确保它出现在类路径的正确子目录中。
1 个错误

因此,从技术上讲,似乎可以将 Java 9 编译的类文件与 Java 8 一起使用。但我认为这是不可能的。

0 投票
1 回答
7663 浏览

java - UnsupportedClassVersionError:Gradle 和 Java 运行时版本出错

我对 Gradle 很陌生,我想尝试一下这个很酷的项目:Strange,一个用于 Java 的量子计算 API(我将在下面留下一个 github 项目的链接)。他们推荐使用 Gradle,所以我这样做了。

在我正在处理的目录中,只有 3 个文件:

  1. 我的 java 主类HelloStrangeWorld.java
  2. build.gradle ,
  3. settings.gradle

现在我只想在我的目录中测试命令:

我得到了这个:

FAILURE:构建失败并出现异常。* 出了什么问题:java.lang.UnsupportedClassVersionError: org/javamodularity/moduleplugin/ModuleSystemPlugin 已由更新版本的 Java Runtime(类文件版本 55.0)编译,此版本的 Java Runtime 仅识别最高版本的类文件52.0

org/javamodularity/moduleplugin/ModuleSystemPlugin 已由更新版本的 Java Runtime(类文件版本 55.0)编译,此版本的 Java Runtime 仅识别最高 52.0 的类文件版本


我有的 :

  • 我的 Java 设置为 1.8

  • 我使用 SDKMAN 安装了 Gradle

build.gradle的内容如下:

我的主要课程内容如下:

到目前为止我已经尝试过:

  • 我检查了我的 JAVA_HOME 是否设置为我的 jdk8。我使用 zsh,所以我检查了 .bashrc 和 .zshrc,并且在这两个地方都设置了 env 变量。

  • 我从 Java 8 更改为 Java 7,它返回我说 Gradle 不应该与 Java 7 一起使用。所以我回到了 Java 8

  • 我检查了 /etc/alternatives 中设置的符号链接,所有与 java 相关的都指向 java 的版本 8

我是否遗漏了有关使用 Gradle 的一些明显内容?

谢谢

这是gitHub 上 Strange 项目的链接。

0 投票
1 回答
39 浏览

android-studio - 当我尝试在 ubuntu 14.04 中安装 android studio

我该如何解决这个问题。请帮我

0 投票
1 回答
971 浏览

java - 无法在 windows 中获取 java 版本

当我在控制台上运行时javac -version,我得到的版本号为11.0.2,但是当我运行时,java -version我得到以下错误:

我该怎么办?

JRE我需要为哪个版本安装JDK 11.0.2,这样我就不会遇到执行 java 代码的任何兼容性问题?

0 投票
1 回答
99 浏览

java - 我的 Spring Java 应用程序中的 Java 运行时错误

我是Java新手,我直接开始学习Java Spring(不知道这是否是个好主意)。我制作了简单的主类文件,我确实“作为 java 项目运行”,但出现以下错误:

以下是我的代码:

代码和错误快照

0 投票
1 回答
190 浏览

cdi - 启用 CDI 时在 log4j2 的依赖项上遇到 UnsupportedClassVersionError

在启用 CDI(beans.xml)之前,我在 log4j2 的依赖项(LMAX Disruptor)上没有任何 UnsupportedClassVersionError。UnsupportedClassVersionError 告诉在 java9 而不是 java8 上运行,但这不是可选的。请告知如何在 java8 上避免此错误。

Weblogic 12.2 log4j 2.11.2

0 投票
2 回答
613 浏览

java - 由于依赖关系,不支持的 major.minor 版本 52.0

我有一个用 Java 7 构建的项目(项目 pom 摘录):

它依赖于一个用 Java 8 构建的模块(依赖 pom 摘录):

我已在运行 Java 7 的服务器上部署并运行我的应用程序,但出现此错误:

知道我无法更改服务器上的 JRE,并且我无法更改模块是用 Java 8 构建的事实,我该如何解决这个问题?

0 投票
0 回答
22 浏览

java - java.lang.UnsupportedClassVersionError ... 得到了最新的一切,但它仍然无法运行?

根据关于如何修复 java.lang.UnsupportedClassVersionError的老问题...

解决方法是更新我的 JRE 和我的 PATH 变量,因此它们指向最新的 JRE 和 JDK……我已经做到了……

我在JRE 8 version 211,显然是最新的,带有最新的 JDK,JDK 12 ...

那么为什么“java”说我的Java运行时只能在“52版”以上的类文件上运行,而我的类文件是用那个JDK编译的,是“类文件56版”?

既然一切都是最新版本,那不应该意味着我可以运行我编译的东西吗?

0 投票
2 回答
111 浏览

java - 当我尝试在 cmd 窗口中使用“java”命令运行我的代码时,出现错误

我第一次尝试学习如何在 java 中编程,当我尝试在 cmd 中运行代码时出现此错误:

它适用于我正在使用的 IDE(intelliJ)。

0 投票
1 回答
4188 浏览

java - java.lang.UnsupportedClassVersionError: com/dicoding/javafundamental/basic/Main 已由 Java 运行时的更新版本编译

在此处输入图像描述

我试图以 JAR 形式制作一个包。但是当我尝试它时,它失败了。如何解决这个问题

结果是这样的:

我的 IDE 和 JDK:

IntelliJ IDEA 2019.1.3(社区版)
构建 #IC-191.7479.19,构建于 2019 年 5 月 28 日
JRE:1.8.0_202-release-1483-b58 amd64 JVM:JetBrains sro Windows 10 10.0
的 OpenJDK 64 位服务器 VM