tomcat始终返回404

jjhzyzn0  于 2021-10-10  发布在  Java
关注(0)|答案(1)|浏览(364)

我有一个spring boot应用程序(使用gradle构建工具),我想使用tomcat 10部署它。我创建war,使用tomcat manager应用程序部署它(或者在tomcat安装/webapps下拖放war),然后打开它,但我总是收到404消息“请求的资源不可用”。
为了测试我的应用程序是否有问题,我创建了一个全新的演示应用程序,其中有一个控制器和端点,应该返回一个字符串。这也没用。
然后我试着按照一个教程(https://www.youtube.com/watch?v=oex_v1q04tg&ab_channel=dailycoding). 我一步一步地跟着它,但我总是得到404的回复。
我还尝试在其他地方寻求帮助(例如,https://www.codejava.net/java-ee/servlet/solved-tomcat-error-http-status-404-not-found),但没有帮助。
这是我的demoapp build.gradle:

plugins {
    id 'org.springframework.boot' version '2.4.5'
    id 'io.spring.dependency-management' version '1.0.11.RELEASE'
    id 'java'
    id 'war'
}

group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '8'

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
}

test {
    useJUnitPlatform()
}

下面是demoapplication.java:

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

@SpringBootApplication
public class DemoApplication extends SpringBootServletInitializer {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(DemoApplication.class);
    }
}

控制器:

package com.example.demo.controllers;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class HelloController {

    @RequestMapping("/")
    public String sayHello() {
        return "Hello from DemoApplication!";
    }
}

感谢您的帮助。

i5desfxk

i5desfxk1#

要么使用@getmapping(通常在控制器方法级别,但我想类也会这样做),要么使用requestmapping(method=requestmethod.get)。

@GetMapping("/")
    public String sayHello() {
        return "Hello from DemoApplication!";
    }

@RequestMapping(method=RequestMethod.GET, "/")
    public String sayHello() {
        return "Hello from DemoApplication!";
    }

除此之外,还要检查tomcat日志(请求管理器/catalina的访问日志,以查找正确的部署)以及java版本(还要检查编译器遵从性)检查此项https://tomcat.apache.org/whichversion.html.

相关问题