我正在开展一个小组项目,我们希望将后端部署到 Google Cloud。后端是使用 Java11、Gradle 和 Spring-Boot 创建的,并通过 GitHub 和 Travis 部署到 Google Cloud。
后端使用 ./gradlew bootrun
在本地主机上正常运行,但在尝试将其部署到 Google Cloud 时,我们收到以下错误:
错误:(gcloud.app.deploy) 您的应用程序不满足 [java11] 类型运行时的所有要求。请更正错误并重试。
我们通过以下过程重新创建了此错误,从等式中删除了 GitHub 和 Travis:
在 https://start.spring.io/ 创建了一个新的 Spring-Boot 项目使用这些设置:
- 项目:Gradle 项目
- 语言:Java
- Spring 启动:2.1.9
- 项目元数据:选项:Java:11
- 依赖项:Spring Security、Spring Web、GCP 支持
创建后,我们添加了文件 app.yaml
和 client_secret.json
。
client_secret.json
文件包含有关 gcloud 上具有大量权限的测试客户端的信息。
app.yaml:
runtime: java11
env: flex
service: default
handlers:
- url: /.*
script: this field is required, but ignored
app.yaml
和 client_secret.json
都存储在同一位置 build.gradle
和 settings.gradle
是。
然后,从终端(我们使用 VScode 中的终端)运行 gcloud app deploy
。该命令首先询问我们是否要将后端部署到指定的谷歌云项目,列出它找到的 app.yaml
文件、源和目标。然后,当我们按 Y 继续时,出现错误。
这是 build.gradle
文件,它可能有用(?):
plugins {
id 'org.springframework.boot' version '2.1.9.RELEASE'
id 'io.spring.dependency-management' version '1.0.8.RELEASE'
id 'java'
}
group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'
repositories {
mavenCentral()
}
ext {
set('springCloudVersion', "Greenwich.SR3")
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-security'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.cloud:spring-cloud-gcp-starter'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.springframework.security:spring-security-test'
}
dependencyManagement {
imports {
mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
}
}
所以我们的问题是;这个错误是什么意思?我们该如何解决它?我们尝试了很多方法,例如编辑 app.yaml
和 build.gradle
,但似乎没有任何效果。我们还很难理解错误发生的位置,因为后端在本地主机上运行良好。
我们感谢每一个回复!
最诚挚的问候 HaavardG :D
最佳答案
似乎从 app.yaml
中删除 env: flex
就成功了,因为 Java11 不支持 env: flex
。
我相信...
关于Java-11 spring-boot 部署到谷歌云错误 : app does not satisfy requirements for [java11],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58505179/