Tomcat 不能 运行 war

Tomcat cant run war

我从 https://start.spring.io/(gradle kotlin 项目)下载了演示 webapp。 为 '/' 和 '/test' 添加了 2 个控制器,只是为了测试是否一切正常。 这是代码:

@Controller
class IndexController {

@ResponseBody
@GetMapping("/")
fun main() : String {
    return "Hello World"
}



@Controller
class TestController {

@ResponseBody
@GetMapping("/test")
fun main() : String {
    return "test"
}

然后我将 war 插件添加到 gradle

apply plugin: 'war'

然后我打印到终端

gradlew build

并在 build/libs 中找到 .war 文件。 我将其部署到定位 Tomcat,但

http://localhost:8080/demo-0.0.1-SNAPSHOT/
http://localhost:8080/demo-0.0.1-SNAPSHOT/test

响应 404 错误。

在 IDEA 中,我可以轻松启动我的应用程序并查看 Hello World 并进行测试。

有什么想法吗?

[JAR 文件]

您在控制器中缺少导入。

在您的控制器中输入以下内容。

package com.example.demo

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;

现在删除插件 apply plugin: 'war' 并使用 gradlew build

构建项目

它将在 app_name\build\libs

中创建一个 jar 文件

在命令提示符中打开此位置并在命令下方运行。

java -jar <jar_file_name>.java

使用以下 url 打开应用程序。

http://localhost:8080

[WAR 文件]

如下扩展 SpringBootServletInitializer

import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
@SpringBootApplication
class DemoApplication : SpringBootServletInitializer()

放置插件 apply plugin: 'war' 并使用 gradlew build

构建项目

现在在 app_name\build\libs 中,它将创建一个 war 文件。

将此 war 部署到 tomcat 服务器并使用以下 URL 进行访问:

http://localhost:8080/demo-0.0.1-SNAPSHOT/