Пружинное развертывание Java-11 в облаке Google: ошибка: приложение не удовлетворяет требованиям для [java11] - PullRequest
5 голосов
/ 22 октября 2019

Я работаю над групповым проектом, в котором мы хотим развернуть бэкэнд в Google Cloud. Серверная часть создается с помощью Java11, Gradle и Spring-Boot и разворачивается через GitHub с Travis в Google Cloud.

Бэкэнд работает как обычно на localhost с ./gradlew bootrun, но при попытке развернуть его в Google Cloud мы получаем следующую ошибку:

ERROR: (gcloud.app.deploy) Your application does not satisfy all of the requirements for a runtime of type [java11]. Please correct the errors and try again.

Java11 error from the terminal

Мы воссоздали эту ошибку с помощью следующей процедуры, удалив GitHub и Travis из уравнения:

Создали новый проект Spring-Boot в https://start.spring.io/ с этими настройками:

  • Проект: Gradle Project
  • Язык: Java
  • Spring Boot: 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. Сначала эта команда спросит нас, хотим ли мы развернуть серверную часть в указанном облачном проекте Google, указав, что он нашел файл 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, но, похоже, ничего не работает. Мы также изо всех сил пытаемся понять, где происходит ошибка, потому что серверная часть работает нормально на localhost.

Мы ценим каждый ответ!

С наилучшими пожеланиями HaavardG: D

Ответы [ 2 ]

2 голосов
/ 08 ноября 2019

Похоже, что удаление env: flex из app.yaml сделало свое дело, поскольку env: flex почему-то не поддерживается Java11.

Я считаю ...

1 голос
/ 12 ноября 2019

Среда App Engine еще не поддерживает Java11.

Поддерживается только для Стандарт App Engine согласно Официальной документации.

...