即使安装了 java 11,Java 运行时也只能识别最高 52.0 的类文件版本

问题描述 投票:0回答:3

我无法在 tomcat 9.0.12 服务器上运行我的 javaservlet,因为它无法处理类版本。 我收到以下错误:

Error: MyClass 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 52.0 (unable to load class

我用 java 11 编译了我的代码:


<plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.0</version>
                <configuration>
                    <source>11</source>
                    <target>11</target>
                </configuration>
            </plugin>

当我在终端中输入:java -version 时,我得到:

java version "11.0.2" 2019-01-15 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.2+9-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.2+9-LTS, mixed mode)

对于 javac -版本

javac 11.0.2

为什么运行时无法处理 v55.0? java 11 == v55.0?!

java tomcat java-11
3个回答
5
投票

问题不是 tomcat 而是运行 tomcat 的 JVM。

我不知道你如何启动tomcat,但你应该使用JDK 11启动它。

如果您使用 Eclipse,您应该检查 Server Runtime

对于其他 IDE 或直接从操作系统启动它(作为应用程序或服务或其他),您应该检查 JAVA_HOME 和 PATH。


3
投票

检查错误中显示的 Java 版本

  • 45 = Java 1.1
  • 46 = Java 1.2
  • 47 = Java 1.3
  • 48 = Java 1.4
  • 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

在program files/java文件夹中安装/下载jdk

在 Eclipse 或 STS 中右键单击项目 -> builPath -> 库 -> 添加 JRE 系统库 -> 添加错误中显示的 jdk 版本作为备用 JRE


0
投票

我已经通过安装最新的 jdk 解决了这个问题。就我而言,版本 21 完成了这项工作: https://www.oracle.com/java/technologies/downloads/#jdk21

© www.soinside.com 2019 - 2024. All rights reserved.