该类已由Java环境的较新版本编译


86

运行Selenium脚本时,我在Eclipse控制台中收到以下错误消息:

类是由Java环境的较新版本(类文件版本53.0)编译的,此版本的Java运行时仅可识别52.0以下的类文件版本。


  • Java版本: 8
  • IDE: Eclipse Oxygen
  • Firefox版本: 46

6
类文件版本53 = Java9。您的Java 8 JVM无法执行Java 9代码。
howlger '17

Answers:


109

这只是版本不匹配。您已经使用Java版本9编译了代码,而当前的JRE是版本8。请尝试将JRE升级到9。

49 = Java 5
50 = Java 6
51 = Java 7
52 = Java 8
53 = Java 9
54 = Java 10
55 = Java 11
56 = Java 12
57 = Java 13
58 = Java 14

24
给出关于逻辑选择的建议可能根本不是一个好的解决方案……如果该项目最初使用jre-8运行,并且有人不小心针对9编译了某个模块,该怎么办?
尤金(Eugene)

我相信升级不会造成任何麻烦,因为不会有任何向后兼容性问题。这是合乎逻辑的,因为我相信编译器已升级到最新版本。
Nithin

9
您正在考虑一个小型沙盒项目;对于企业项目-这绝非易事。例如,某些错误已在8中针对您在7中依赖它们的副作用的泛型进行了修复;或HashMap订单已从7更改为8 ...等。我已经遇到了这个问题。简而言之-移至9是一个不错的选择,但绝非简单快捷的选择
Eugene

如果您以企业项目级别来说明,是的,您是正确的,我非常同意这一点。在这种情况下,升级/降级从来都不是最可行的选择。
Nithin

@nithinpankaj基本上,每次我尝试使用Java 9时,都会引发一些新错误。由于没有理由去升级,我已经停止了尝试,并具备Java 9的比较差的意见
Erhannis

37

IDE:Eclipse Oxygen.3

要暂时纠正问题,请执行以下操作:

Project menu> Properties> Java Compiler> Compiler compliance level>1.8

永久性修复可能涉及安装JDK 9。

FYI 1.8是Java 8的名称。

侧杆

在尝试C#(呼吸新鲜空气)之后,我最近返回Java,并将Eclipse Oxygen安装到以前从未安装过Java的干净系统上。这是使用全新安装的Eclipse Oxygen缺省的所有内容,但是无论如何还是其他Eclipse无法获得自己的参数来匹配已安装的jdk。这是我创建的第二个项目,也是我第二次遇到这种麻烦。是时候回到C#了吗?

相关问题

已由较新版本的Java Runtime编译(类文件版本53.0)


有趣。那么这是否意味着字节码不向前兼容?
toto'


6

53代表java-9,因此这意味着您使用过的任何类都已编译过,javac-9而您尝试使用运行它jre-8javac-8使用jre-9重新编译该类


1

我写这篇文章是因为我发现其他答案很难理解。

本质上,您的JRE未更新和/或未将Eclipse配置为使用最新的JRE。

在Windows上,转到控制面板->程序-> Java->更新,然后继续更新Java

或者,如果您没有Java,请访问Oracle网站并下载最新的JRE。

完成此操作后,进入eclipse,在项目视图下,右键单击您的项目,选择Java Build Path,双击JRE System Library,然后选择Workspace Default JRE 14.1。

如果Java的最新版本未在此处显示,则可能未安装。检查您的JRE(NOT JDK)版本,并确保它是最新版本。如果是这样,请尝试重新启动计算机,然后再试一次。


0

转到“项目”部分,单击“属性”,然后单击“ Java编译器”>检查编译器的遵从性级别是否为1.8,否则底部应该没有黄色警告



-1

对于临时解决方案,只需右键单击Project => Properties => Java编译器=>那边,请选择编译器符合级别1.8 => .class兼容性1.8 =>源兼容性1.8

然后您的代码将开始在版本1.8上执行。

感谢和问候,Akshay kenjale。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.