当前位置: 首页 > 知识库问答 >
问题:

Spring Boot总是返回404错误

陆博易
2023-03-14

我试图获得一个Spring Boot(1.5.9)项目,以响应一个简单的Hello world消息。但是,我发送的任何请求都会立即返回404异常。

MyBackEndApplication

package net.mypackage.backend;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class MyBackendApplication {

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

控制器/指挥机

package net.mypackage.backend.controllers;

import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.RequestMapping;

@RestController
public class HelloController {

    @RequestMapping("/hello")
    public String sayHello() {
        return "Hello, world!";
    }

}
server.port = 5000
server.contextPath=/
logging.level.org=DEBUG

Build.Gradle

buildscript {
    ext {
        springBootVersion = '1.5.9.RELEASE'
    }
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
    }
}

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'

group = 'net.mypackage'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = 1.8

repositories {
    mavenCentral()
}


dependencies {
    compile('org.springframework.boot:spring-boot-starter-jersey')
    runtime('org.springframework.boot:spring-boot-devtools')
    testCompile('org.springframework.boot:spring-boot-starter-test')
    compile("org.springframework.boot:spring-boot-starter-actuator")
}

当请求一个页面(localhost:5000/hello)时,我得到一个404错误。以下信息显示在此请求的日志中(这里有一个要点,因为我不喜欢将其格式化为引号的方式):

2018-02-05 13:01:37.600 DEBUG 17448---[nio-5000-exec-2]o.a.coyote.http11.http11inputbuffer:接收[GET/HTTP/1.1
缓存-控制:无缓存用户代理:PostmanRuntime/7.1.1 Accept://host:127.0.0.1:5000 Accept-Encoding:gzip,deflate Connection:keep-alive]2018-02-05 13:01:37.601 DEBUG 17448--[nio-5000-exec-2]O.A.C.Authenticator.AuthenticatorBase:安全检查请求GET/2018-02-05 13:01:37.601 DEBUG 17448--[nio-5000-exec-2]org.apache.catalina.realmBase:未定义适用的约束2018-02-05 13:01:37.601 DEBUG任何约束2018-02-05 13:01:37.604 DEBUG 17448----[nio-5000-exec-2]o.a.tomcat.util.net.socketwrapperbase:socket:[org.apache.tomcat.util.net.nioendpoint$niosocketwrapper@4bfc0a6:org.apache.tomcat.util.net.niochannel@b945368:java.nio.channels.socketchannel[connected local=/127.0.0.1:5000 G17448--[nio-5000-exec-2]O.apache.coyote.http11.http11Processor:Socket:[org.apache.tomcat.util.net.nioEndpoint$nioSocketWrapper@4bfc0a6:或g.apache.tomcat.util.net.nioChannel@b945368:java.nio.channels.socketChannel[connected local=/127.0.0.1:5000 remote=/127.0.0.1:53684]],状态in:[OPEN_READ],状态out:[OPEN]

我肯定我错过了一些非常基本的东西,但我一辈子都想不出来是什么。提前致谢:)

共有1个答案

徐淳
2023-03-14

您提供的信息是不够的。

当我使用这个pom.xml尝试您的应用程序和控制器时:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.example</groupId>
    <artifactId>mvc</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>MVC</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.9.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

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

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

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

它可以与server.contextpath=/一起使用,也可以在注释掉时使用。

 类似资料:
  • 我正在做一个简单的项目,它使用Spring Boot 2和使用Kotlin的Spring WebFlux。我为我的处理函数编写了测试(在测试中,我使用Mockito模拟依赖项)。 然而,我的路由函数似乎不会触发处理程序,因为我的所有请求都返回HTTP 404 not FOUND(即使路由是正确的)。 我已经查看了各种其他项目,以了解这些测试应该如何编写(这里,这里),但问题仍然存在。 代码如下(也

  • 我已经看了很多教程,但我无法使我的简单JAX-RS应用程序工作。Tomcat总是返回错误404。 要获取类的应用程序: 我的JAX-RS文件: web.xml http://localhost:8080/msm-master/resources/hello/ 编辑:已添加Tomcat控制台输出:

  • JSoup-1.8.1 尝试{ Document Document=Jsoup.connect(url.get(); 返回Document.getElementsByTag(“title”).text(); }catch(异常e){ System.out.println(e); 返回null; } org.jsoup.HttpStatusExc0019: HTTP错误获取URL。状态=404, U

  • 404错误不会作为库中的直接返回,而是作为错误抛出在捕获中。我的问题是现在我可以以某种方式在捕获中查询,错误有哪个数字? 或者如何使用axios库查询它是否是404错误?

  • 我在路径“/test”中有一个无用的endpoint: 我这样测试: 但我得到一个断言错误: 预期状态代码 这发生在更多的代码中:400,500...除了200。 我用的是Spring靴。如果在运行测试时在endpoint方法中放置断点,则执行将停止,因此测试中的请求将正确完成。如果我将状态代码(在资源和测试中也是)更改为200,则测试通过。 到底发生了什么?

  • 这是我的控制器,它将请求映射到以下url