【发布时间】:2021-02-22 01:26:26
【问题描述】:
我刚刚在我的 Ubuntu 虚拟机中编译了一个简单的 Java 程序。它在那里运行良好。 当我将相同的“.class”文件复制到 Windows(主机)时,我收到以下消息:
"(...) 已由更新版本的 Java Runtime(类文件版本 58.0)编译,此版本的 Java Runtime 仅识别最高 52.0 版的类文件版本"
有什么方法可以通过只更改我的 Ubuntu 环境来解决这个问题?
【问题讨论】:
我刚刚在我的 Ubuntu 虚拟机中编译了一个简单的 Java 程序。它在那里运行良好。 当我将相同的“.class”文件复制到 Windows(主机)时,我收到以下消息:
"(...) 已由更新版本的 Java Runtime(类文件版本 58.0)编译,此版本的 Java Runtime 仅识别最高 52.0 版的类文件版本"
有什么方法可以通过只更改我的 Ubuntu 环境来解决这个问题?
【问题讨论】:
每个版本的 JDK 都有自己的类版本。
JDK 可以运行以前 JDK 中的文件,但不能运行未来 JDK 中的文件。
58.0 适用于 JDK 版本 14。
52.0 适用于 JDK 8。
您可以在 Windows 机器上更新 JDK
或
您可以使用 -target 命令行选项为特定的 JDK 进行编译。
见
List of Java class file format major version numbers?
和
【讨论】:
Windows 上的 Java 是 Java8。 Ubuntu 上的 Java 更强大。
java --version
给你数字。
您可以下载 jdk 并将其安装在 Windows 上。更改 JAVA_HOME 环境变量以使用新的 jdk。
【讨论】: