问题标签 [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.
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 用 Java 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 一起使用。但我认为这是不可能的。
java - UnsupportedClassVersionError:Gradle 和 Java 运行时版本出错
我对 Gradle 很陌生,我想尝试一下这个很酷的项目:Strange,一个用于 Java 的量子计算 API(我将在下面留下一个 github 项目的链接)。他们推荐使用 Gradle,所以我这样做了。
在我正在处理的目录中,只有 3 个文件:
- 我的 java 主类HelloStrangeWorld.java,
- build.gradle ,
- 和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 项目的链接。
java - 无法在 windows 中获取 java 版本
当我在控制台上运行时javac -version
,我得到的版本号为11.0.2
,但是当我运行时,java -version
我得到以下错误:
我该怎么办?
JRE
我需要为哪个版本安装JDK 11.0.2
,这样我就不会遇到执行 java 代码的任何兼容性问题?
cdi - 启用 CDI 时在 log4j2 的依赖项上遇到 UnsupportedClassVersionError
在启用 CDI(beans.xml)之前,我在 log4j2 的依赖项(LMAX Disruptor)上没有任何 UnsupportedClassVersionError。UnsupportedClassVersionError 告诉在 java9 而不是 java8 上运行,但这不是可选的。请告知如何在 java8 上避免此错误。
Weblogic 12.2 log4j 2.11.2
java - 由于依赖关系,不支持的 major.minor 版本 52.0
我有一个用 Java 7 构建的项目(项目 pom 摘录):
它依赖于一个用 Java 8 构建的模块(依赖 pom 摘录):
我已在运行 Java 7 的服务器上部署并运行我的应用程序,但出现此错误:
知道我无法更改服务器上的 JRE,并且我无法更改模块是用 Java 8 构建的事实,我该如何解决这个问题?
java - java.lang.UnsupportedClassVersionError ... 得到了最新的一切,但它仍然无法运行?
根据关于如何修复 java.lang.UnsupportedClassVersionError的老问题...
解决方法是更新我的 JRE 和我的 PATH 变量,因此它们指向最新的 JRE 和 JDK……我已经做到了……
我在JRE 8 version 211,显然是最新的,带有最新的 JDK,JDK 12 ...
那么为什么“java”说我的Java运行时只能在“52版”以上的类文件上运行,而我的类文件是用那个JDK编译的,是“类文件56版”?
既然一切都是最新版本,那不应该意味着我可以运行我编译的东西吗?
java - 当我尝试在 cmd 窗口中使用“java”命令运行我的代码时,出现错误
我第一次尝试学习如何在 java 中编程,当我尝试在 cmd 中运行代码时出现此错误:
它适用于我正在使用的 IDE(intelliJ)。
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