为什么只有一个Java版本可用时会出现LinkageError?

qnakjoqk  于 2023-02-07  发布在  Java
关注(0)|答案(6)|浏览(468)

这是我的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,我下载了其他版本的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

那么,为什么编译和执行是在不同的版本中完成的呢?

mm9b1k5b

mm9b1k5b1#

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

ezykj2lf

ezykj2lf2#

    • 我在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.右键单击项目名称
1.选择属性
1.选择Java编译器
1.单击恢复默认值。
1.应用并关闭。
这对我很有效。enter image description here

eeq64g8w

eeq64g8w3#

update-alternatives --config javacupdate-alternatives --config java使用sudo命令。因此,您可以为编译器和运行时环境选择相同版本的java。
我也得到了同样的错误后,编译我的java程序.我有截图----〉x1c 0d1x

4jb9z9bj

4jb9z9bj4#

当你试图改变java .class文件的内容时也会发生这个错误。字节码验证器会生成这个错误。
错误:加载主类Hello java.lang时发生链接错误。不支持的类版本错误:Hello已由较新版本的Java Runtime(类文件版本8251.8224)编译,此版本的Java Runtime只能识别最高版本为59.0的类文件

kgsdhlau

kgsdhlau5#

当运行17版本的java spring Boot 项目时,我的计算机上也会出现这个错误。

/mvnw spring-boot:run

检查您的本地java版本。

java --version
openjdk 11.0.12 2021-07-20 LTS

问题是我开始的Spring Boot 项目是17 java版本.该项目已不需要的版本,所以我降级java版本上的 Spring 启动项目.
我更新了pom.xml

<properties>
<java.version>11</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

在那之后我就开始了春 Boot 计划

/mvnw spring-boot:run

我的程序起作用了。

35g0bw71

35g0bw716#

我也面临着同样的问题,所有你需要做的是下载最新的jdk在我的情况下它是19和保存在本地;然后,右键单击Eclipse中的Project(我的IDE)
生成路径--配置生成路径
Java生成路径--选择“库”标签
从ModulePath中删除现有的jre版本
(Make确保它有任何其他版本)
单击“添加库”--选择“JRE系统库”--下一步
单击已安装的JRE,添加--标准VM--单击下一步,
现在您将看到“添加JRE”对话框,
单击JRE主目录,选择您之前下载的jdk 19文件夹。

相关问题