我开发了一个Spring Boot
REST API,当我使用this指南将其部署到Google App Engine
时,我得到了错误[INFO] GCLOUD: java.lang.UnsupportedClassVersionError: org/springframework/boot/loader/JarLauncher has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 53.0
。
我确保通过<java.version>9</java.version>
在maven
中使用Java 9
编译应用程序。然后我还确保在app.yaml
中为Google App Engine
指定openjdk9
。我使用mvn clean install appengine:deploy -P cloud-gcp -DskipTests
进行了干净的构建和部署,但错误仍然存在。
根据this table,代码显然是使用Java 17
编译的(不正确),但试图使用Java 9
运行(正确)。据我所知,我没有在任何地方将代码配置为使用Java 17
编译。
编辑:
后来我在谷歌上搜索了一下,发现是Spring Boot 3
requires a minimum of Java 17
,似乎就是它了。所以我不能在Google App Engine
上使用Spring Boot 3
,因为Google App Engine
only supports openjdk8
and openjdk9
,所以我不得不降级Spring Boot
,这是我不想做的。
有没有办法在Google App Engine
上使用openjdk17
?
1条答案
按热度按时间rryofs0p1#
基于Java 11/17运行时环境的文档:
Java 11/17运行时使用在app.yaml文件中指定的最新稳定版本。App Engine会自动更新到新的修补程序版本,但不会自动更新次要版本。
App Engine在最新Ubuntu Linux发行版上的gVisor保护的容器中运行Java 11/17应用程序,并支持用于Java 11的openjdk-11-jdk或用于Java 17运行时的openjdk-17-jdk。
您应该在
runtime
中声明您希望使用的运行时环境: