为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

白衣非少年 2021-12-22 15:24:53
这是我的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 javajava - 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那么不同版本的编译和执行是如何完成的呢?
查看完整描述

3 回答

?
慕森王

TA贡献1777条经验 获得超3个赞

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


查看完整回答
反对 回复 2021-12-22
?
Smart猫小萌

TA贡献1911条经验 获得超7个赞

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

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

//img1.sycdn.imooc.com//61c2d2ea000179be13650769.jpg

查看完整回答
反对 回复 2021-12-22
?
萧十郎

TA贡献1815条经验 获得超13个赞

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

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


查看完整回答
反对 回复 2021-12-22
  • 3 回答
  • 0 关注
  • 1162 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号