You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java 17升级至21后出现UnsupportedClassVersionError的问题排查

Java 17升级到21后Azure部署报错UnsupportedClassVersionError

问题详情

我已将Java项目从17版本升级至21版本,完成了以下本地配置:

  • 环境变量JAVA_HOME设置为Java 21目录:
    Variable Name: JAVA_HOME
    Variable Value: C:\Java\jdk-21.0.2
    
  • 本地Java和Gradle版本验证正确:
    $ java --version
    openjdk 21.0.2 2024-01-16
    OpenJDK Runtime Environment (build 21.0.2+13-58)
    OpenJDK 64-Bit Server VM (build 21.0.2+13-58, mixed mode, sharing)
    
    $ gradle --version
    ------------------------------------------------------------
    Gradle 8.10
    ------------------------------------------------------------
    
  • IntelliJ中gradle.properties指定源码兼容性:
    sourceCompatibility = JavaVersion.VERSION_21
    
  • Gradle Wrapper配置为最新8.10版本:
    distributionUrl=https\://services.gradle.org/distributions/gradle-8.10-bin.zip
    
  • IntelliJ的Gradle JVM和Java Compiler均已指向Java 21,本地Gradle构建成功,但外部库仍显示原Java 17库(已确认指向Java 21目录)。

部署到Azure应用服务后,日志报错:

2024-09-11T21:25:28.202408129Z 2024-09-11 21:25:28.202Z INFO  c.m.applicationinsights.agent - Java version: 17.0.12, vendor: Eclipse Adoptium, home: /opt/java/openjdk
2024-09-11T21:25:28.721339850Z Exception in thread "main" java.lang.UnsupportedClassVersionError: com/xxx/yyy/Application has been compiled by a more recent version of the Java Runtime (class file version 65.0), this version of the Java Runtime only recognizes class file versions up to 61.0

本地JAVA_HOME并非日志中的/opt/java/openjdk,怀疑问题出在Azure端,请问完成Java 17到21的升级还缺少哪些步骤?

解决方案

问题原因是Azure服务器上运行的旧版Apache Tomcat不支持Java 21,升级至兼容Java 21的新版Tomcat(如Tomcat 10.1.x或Tomcat 11.x)后,问题即可解决。

内容的提问来源于stack exchange,提问作者KevinG

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 12:06:11