2

我正在为个人项目构建一个 REST API,使用 Spring Boot 来执行此操作,并部署到 Google App Engine 上。该项目在本地编译和运行没有问题,我可以部署到 GAE 而没有构建错误。但是,当我在部署到 GAE 后导航到我的 URI 时,会抛出 404 并显示以下消息:

No context on this server matched or handled this request.
Contexts known to this server are:
/ ---> o.e.j.w.WebAppContext@56ef9176{/,file:///var/lib/jetty/webapps/root/,UNAVAILABLE}{/root.war} [failed]

我有一个 build.gradle 和 pom.xml 文件,并且必须在两者中声明依赖项,我认为这是问题所在。

我的 pom.xml 包含:

<dependencyManagement>
  <dependencies>
    <dependency>
      <!-- Import dependency management from Spring Boot -->
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-dependencies</artifactId>
      <version>2.0.1.RELEASE</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>

<dependencies>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
  </dependency>
</dependencies>

我的 build.gradle 包含:

plugins {
  id 'org.springframework.boot' version '2.0.1.RELEASE'
}
apply plugin: 'io.spring.dependency-management'
dependencies {
  compile 'org.springframework.boot:spring-boot-starter-web'
}

当我从两者中删除两个 spring boot 依赖项时,错误消失了。

有任何想法吗?

4

1 回答 1

1

最后我自己想出来了,但会把这个留给任何偶然发现同样错误的人。
正如我在文档中发现的那样:如果您使用WAR作为可部署文件(而不是 .jar 文件),那么您还必须spring-boot-starter-tomcat作为提供的依赖项导入。

我的 pom.xml 现在看起来像:

<dependencyManagement>
  <dependencies>
    <dependency>
      <!-- Import dependency management from Spring Boot -->
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-dependencies</artifactId>
      <version>2.0.1.RELEASE</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>

<dependencies>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
  </dependency>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <scope>provided</scope>
  </dependency>
</dependencies>

我的 build.gradle 现在看起来像:

plugins {
  id 'org.springframework.boot' version '2.0.1.RELEASE'
}
apply plugin: 'io.spring.dependency-management'
dependencies {
  compile 'org.springframework.boot:spring-boot-starter-web'
  providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
}
于 2018-04-28T19:29:29.103 回答