这是我的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
那么,为什么编译和执行是在不同的版本中完成的呢?
6条答案
按热度按时间mm9b1k5b1#
问题是其他下载的Java版本可以通过我的PATH变量访问。所以在编译和执行我的程序时指定了Javac和Java可执行文件的完整路径后,它就可以工作了。
ezykj2lf2#
1.右键单击项目名称
1.选择属性
1.选择Java编译器
1.单击恢复默认值。
1.应用并关闭。
这对我很有效。enter image description here
eeq64g8w3#
update-alternatives --config javac
和update-alternatives --config java
使用sudo命令。因此,您可以为编译器和运行时环境选择相同版本的java。我也得到了同样的错误后,编译我的java程序.我有截图----〉x1c 0d1x
4jb9z9bj4#
当你试图改变java .class文件的内容时也会发生这个错误。字节码验证器会生成这个错误。
错误:加载主类Hello java.lang时发生链接错误。不支持的类版本错误:Hello已由较新版本的Java Runtime(类文件版本8251.8224)编译,此版本的Java Runtime只能识别最高版本为59.0的类文件
kgsdhlau5#
当运行17版本的java spring Boot 项目时,我的计算机上也会出现这个错误。
检查您的本地java版本。
问题是我开始的Spring Boot 项目是17 java版本.该项目已不需要的版本,所以我降级java版本上的 Spring 启动项目.
我更新了pom.xml
在那之后我就开始了春 Boot 计划
我的程序起作用了。
35g0bw716#
我也面临着同样的问题,所有你需要做的是下载最新的jdk在我的情况下它是19和保存在本地;然后,右键单击Eclipse中的Project(我的IDE)
生成路径--配置生成路径
Java生成路径--选择“库”标签
从ModulePath中删除现有的jre版本
(Make确保它有任何其他版本)
单击“添加库”--选择“JRE系统库”--下一步
单击已安装的JRE,添加--标准VM--单击下一步,
现在您将看到“添加JRE”对话框,
单击JRE主目录,选择您之前下载的jdk 19文件夹。