【问题标题】:Class has been compiled by a more recent version of the Java Environment类已由 Java 环境的更新版本编译
【发布时间】:2018-05-07 12:20:43
【问题描述】:

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

类已由较新版本的 Java 环境(类文件版本 53.0)编译,此版本的 Java 运行时仅识别最高 52.0 版的类文件。


  • Java 版本:8
  • IDE:Eclipse Oxygen
  • 火狐版本:46

【问题讨论】:

  • 类文件版本 53 = Java 9。您的 Java 8 JVM 无法执行 Java 9 代码。

标签: java eclipse selenium firefox java-8


【解决方案1】:

这是一个例子 如果您的电脑运行的是旧版本的java并且Neo4J是在最新版本上编译的,请尝试在您的电脑上安装相同或更高版本。

【讨论】:

    【解决方案2】:

    IDE:Eclipse 2021-09

    这是因为您使用 java 版本 9 编译了代码并安装了 java8。您无需更新即可解决此问题。

    右键项目>属性>Java编译器>取消勾选-启用 项目特定设置 > 配置工作区设置 > 勾选-使用 默认合规性设置 > 应用并关闭。


    现在您的代码应该可以正确执行了。

    【讨论】:

      【解决方案3】:

      您应该检查您的项目方面。

      项目属性 > 项目方面

      将 java 版本更改为您正在使用的相同版本。这对我有用!

      【讨论】:

        【解决方案4】:

        对于临时解决方案,只需右键单击项目 => 属性 => Java 编译器 => 那里请选择编译器合规级别 1.8 => .class 兼容性 1.8 => 源兼容性 1.8

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

        【讨论】:

          【解决方案5】:

          您的 JDK 版本:Java 8
          您的 JRE 版本:Java 9

          在这种情况下,您的 JRE 版本与 JDK 版本不同。在这里,您可以使用 JDK 1.8 版本编译所有 java 类。如果你只想编译一个java类,把*.java改成<yourclassname>.java

          javac -source 1.8 -target 1.8  *.java
          

          source:编译源代码所需的版本。
          目标:您要支持的最旧的 JRE 版本。

          【讨论】:

            【解决方案6】:

            在 Intellij 中构建 Jar 后,我在控制台遇到了类似的问题。使用 Java 配置更新到较新版本(Windows -> 配置 Java -> 更新 -> 立即更新)不起作用并停留在 1.8 版(Java 8)。

            要在本地切换到更新的版本,我必须从 https://www.oracle.com/uk/java/technologies/javase-jdk15-downloads.html 安装 Java 15 JDK 并将其添加到我的 Java 运行时环境设置中。

            【讨论】:

              【解决方案7】:

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

              基本上您的 JRE 没有更新和/或 Eclipse 没有配置为使用最新的 JRE。

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

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

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

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

              【讨论】:

                【解决方案8】:

                这只是版本不匹配。您已经使用 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
                

                【讨论】:

                • logical 选择提供建议可能根本不是一个好的解决方案...如果项目首先使用 jre-8 运行并且有人意外编译了怎么办一些针对 9 的模块?
                • 我相信升级仍然不会造成任何麻烦,因为不会有任何向后兼容性问题。这是合乎逻辑的,因为我相信编译器已经升级到最新版本。
                • 您正在考虑一个小型沙盒项目;对于企业项目——这绝非易事。例如,在 8 中修复了一些错误,因为您在 7 中依赖它们的副作用;或HashMap 订单已从 7 更改为 8... 等等。我遇到过这个问题。 简单地说 - 移动到 9 是一个不错的选择,但绝不是简单快速的选择
                • 如果您在企业项目级别方面进行陈述,是的,您是正确的,我非常同意这一点。在这种情况下,升级/降级绝不是最可行的选择。
                • @nithinpankaj 基本上每次我尝试使用 Java 9 时,都会抛出一些新错误。由于没有升级的理由,我已经停止尝试,并且对 Java 9 的评价相当差。
                【解决方案9】:

                你可以试试这个方法

                javac --release 8 yourClass.java
                

                【讨论】:

                  【解决方案10】:

                  刷新 gradle 依赖项对我有用:右键单击项目 -> Gradle -> 刷新 Gradle 项目。

                  【讨论】:

                    【解决方案11】:

                    转到项目部分,点击属性>然后点击Java编译器>检查编译器合规级别是1.8,否则底部应该没有黄色警告

                    【讨论】:

                      【解决方案12】:

                      IDE:Eclipse Oxygen.3

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

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

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

                      仅供参考 1.8 是 Java 8 的名称。

                      侧边栏

                      在尝试了 C#(呼吸新鲜空气)之后,我最近回到了 Java,并将 Eclipse Oxygen 安装到一个以前从未安装过 Java 的干净系统上。这个默认一切带有全新安装的 Eclipse Oxygen,但不知何故或其他 Eclipse 无法获得自己的参数来匹配已安装的 jdk。这是我创建的第二个项目,也是我第二次遇到这种头痛。是时候回到 C# 了吗?

                      相关问题

                      has been compiled by a more recent version of the Java Runtime (class file version 53.0)

                      【讨论】:

                      • 有趣。那么这是否意味着字节码不向前兼容?
                      【解决方案13】:

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

                      【讨论】:

                        猜你喜欢
                        • 2022-11-27
                        • 2022-01-23
                        • 2020-01-27
                        • 2018-06-01
                        • 2019-10-07
                        • 2022-07-25
                        • 1970-01-01
                        • 2021-01-07
                        相关资源
                        最近更新 更多