繁体   English   中英

Java-11 spring-boot 部署到谷歌云错误:应用程序不满足 [java11] 的要求

[英]Java-11 spring-boot deployment to google cloud error: app does not satisfy requirements for [java11]

我正在开展一个小组项目,我们希望将后端部署到 Google Cloud。 后端使用 Java11、Gradle 和 Spring-Boot 创建,并通过 GitHub 和 Travis 部署到 Google Cloud。

后端使用./gradlew bootrun在 localhost 上正常运行,但是在尝试将其部署到 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 错误

我们使用以下过程重新创建了此错误,从等式中删除了 GitHub 和 Travis:

使用以下设置在https://start.spring.io/处创建了一个新的 Spring-Boot 项目:

  • 项目:Gradle项目
  • 语言:Java
  • Spring 引导:2.1.9
  • 项目元数据:选项:Java:11
  • 依赖项:Spring 安全性,Spring Web,GCP 支持

创建后,我们添加了文件app.yamlclient_secret.json

client_secret.json文件包含有关 gcloud 上具有大量权限的测试客户端的信息。

app.yaml:

runtime: java11
env: flex

service: default

handlers:
- url: /.*
  script: this field is required, but ignored

app.yamlclient_secret.json都存储在同一个地方build.gradlesettings.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.yamlbuild.gradle ,但似乎没有任何效果。 我们也很难理解错误发生在哪里,因为后端在 localhost 上运行良好。

我们感谢每一个回应!

最好的问候 HaavardG:D

似乎从app.yaml中删除env: flex起到了作用,因为 Java11 不支持env: flex

我相信...

App Engine Standard 和 Flexible(两者)都支持 Java 11. App Engine Standard 和 Flexible 的区别在于Standard 具有特定版本的 Java 而 Flexible 支持任何版本的 ZD52387880E1EA22817A72D3759Z。

上面给出的错误是由于您正在输入 app.yaml, runtime:java11。 它必须如下所示:

app.yaml

runtime: custom
env: flex

service: default

handlers:
  - url: /.*
    script: this field is required, but ignored

您必须先创建自定义运行时才能正确部署它。 在这里,您可以查看在 App Engine 柔性环境中创建自定义运行时的官方文档。

转换 ArrayList 列表的最佳方法是什么<object>到自定义 object java11 Spring 引导 2.1<div id="text_translate"><p> 我有 ArrayList 对象列表,其中对象可以是文本、BigDecimal、Long</p><pre> List&lt;Object&gt; data = { {"date","prize1","cardsNumers","cardObtained","totalCards","anotherPrize"}, {"2020-05-01",435345.67,43,56,67,345345345}, {"2020-03-01",45656.2,34,67,23,456456}, {"2020-02-01",56565,34,56,67,878987} }</pre><p> arrayList 中的第 1、2、3 等对象是第 0 个 arraylist 中提到的每个字段的值。 在如下表中,</p><p> <a href="https://i.stack.imgur.com/Tmdw2.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/Tmdw2.png" alt="在此处输入图像描述"></a></p><p> 我想从上面获取每个文件的总和并分配给下面自定义 Object 的同一字段,</p><pre> public class SumObject { private Date date; private BigDecimal sumPrize1; private BigDecimal sumCardsNumers; private long sumCardObtained; private long sumTotalCards; private long sumAnotherPrize; }</pre><p> 我通过遍历 List 中的 arrayList 来实现这一点,并通过 get(index) 方法获取值。 但我想知道是否有任何其他好的方法可以做到这一点。</p><p> 如果有人有任何建议,请发布答案或给我一个我可以阅读的文件的方向。</p><p> 提前致谢。</p></div></object>

[英]what would be best way to convert List of ArrayList<Object> to a custom object java11 Spring boot 2.1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 使用 java11 在谷歌云上使用 mysql 部署 Spring 启动应用程序 Google Cloud Dataflow 使用什么 java 运行时? java8 或 java11 我可以在 java-11 spring boot 2 项目中使用 java-8 编译的项目/库吗? 迁移到Java11 JEP 323 Java-11中的@Notnull在哪里 转换 ArrayList 列表的最佳方法是什么<object>到自定义 object java11 Spring 引导 2.1<div id="text_translate"><p> 我有 ArrayList 对象列表,其中对象可以是文本、BigDecimal、Long</p><pre> List&lt;Object&gt; data = { {"date","prize1","cardsNumers","cardObtained","totalCards","anotherPrize"}, {"2020-05-01",435345.67,43,56,67,345345345}, {"2020-03-01",45656.2,34,67,23,456456}, {"2020-02-01",56565,34,56,67,878987} }</pre><p> arrayList 中的第 1、2、3 等对象是第 0 个 arraylist 中提到的每个字段的值。 在如下表中,</p><p> <a href="https://i.stack.imgur.com/Tmdw2.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/Tmdw2.png" alt="在此处输入图像描述"></a></p><p> 我想从上面获取每个文件的总和并分配给下面自定义 Object 的同一字段,</p><pre> public class SumObject { private Date date; private BigDecimal sumPrize1; private BigDecimal sumCardsNumers; private long sumCardObtained; private long sumTotalCards; private long sumAnotherPrize; }</pre><p> 我通过遍历 List 中的 arrayList 来实现这一点,并通过 get(index) 方法获取值。 但我想知道是否有任何其他好的方法可以做到这一点。</p><p> 如果有人有任何建议,请发布答案或给我一个我可以阅读的文件的方向。</p><p> 提前致谢。</p></div></object> 无法使用 Java11 和 Windows 在 cmd 上运行 Java 应用程序 Spring Web XML 不尊重 Java11 中的 XmlRootElement 使用 java11 在 Google App Engine 上部署单个 jar 时防止构建尝试 Java11 appengine 标准不正确的 app.yaml 处理程序
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM