5

这是我的 Java 环境:

~: java -version
    java version "11.0.1" 2018-10-16 LTS
    Java(TM) SE Runtime Environment 18.9 (build 11.0.1+13-LTS)
    Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.1+13-LTS, mixed mode)

但是在编译后尝试执行程序时,出现以下错误:

Error: LinkageError occurred while loading main class ClassName
    java.lang.UnsupportedClassVersionError: ClassName has been 
    compiled by a more recent version of the Java Runtime 
    (class file version 55.0), this version of the Java Runtime 
    only recognizes class file versions up to 54.0

我的 PATH 和 JAVA_HOME 变量都指向这个版本的 java。我下载了其他版本,但似乎没有在系统中注册:

update-alternatives --display java
java - auto mode
  link best version is /usr/lib/jvm/java-11-openjdk-amd64/bin/java
  link currently points to /usr/lib/jvm/java-11-openjdk-amd64/bin/java
  link java is /usr/bin/java
  slave java.1.gz is /usr/share/man/man1/java.1.gz
/usr/lib/jvm/java-11-openjdk-amd64/bin/java - priority 1101
  slave java.1.gz: /usr/lib/jvm/java-11-openjdk-amd64/man/man1/java.1.gz

那么编译和执行是怎么用不同的版本来完成的呢?

4

4 回答 4

4

问题是可以通过我的 PATH 变量访问其他下载的 Java 版本。因此,在编译和执行我的程序时指定 javac 和 java 可执行文件的完整路径后,它就可以工作了。

于 2018-10-31T22:19:17.067 回答
1

与 sudo 命令一起使用 update-alternatives --config javac 和 java。因此,您可以为编译器和运行时环境选择相同版本的 java。

编译我的java程序后我也遇到了同样的错误。我有截图----> 截屏

于 2021-03-13T07:35:55.103 回答
0

当您尝试更改 java .class 文件的内容时,也会发生此错误。字节码验证器会生成此错误,例如。

错误:加载主类时发生 LinkageError Hello java.lang.UnsupportedClassVersionError:Hello 已由更新版本的 Java Runtime(类文件版本 8251.8224)编译,此版本的 Java Runtime 仅识别最高 59.0 的类文件版本

于 2020-11-11T06:35:05.350 回答
0

我在eclipse中遇到了这个错误:

LinkageError occurred while loading main class com.example.demo.SpringDemo1Application
    java.lang.UnsupportedClassVersionError: com/example/demo/SpringDemo1Application has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 60.0
  1. 右键单击项目名称
  2. 选择属性
  3. 选择 Java 编译器
  4. 单击恢复默认值。
  5. 应用并关闭。

这对我有用。 在此处输入图像描述

于 2022-02-13T19:51:15.713 回答