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

Java Spring Boot返回404

龙志勇
2023-03-14

当我从Eclipse运行Spring Boot应用程序时,它在嵌入式Tomcat服务器上正常运行,但当我将其部署到外部tomcat服务器(在Windows上)时,我将获得HTTP 404状态。

我清理了包并从本地tomcat服务器上tomcat webapps文件夹中的目标文件夹war文件中复制,然后重新启动了tomcat,但是。。。

当我运行获取方法在邮递员与endpointhttp://localhost:8080/export/test/我得到404未找到

Tomcat版本9
Java11

TOMCAT管理器:

@SpringBootApplication
public class ExportApplication extends SpringBootServletInitializer {

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

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

POM文件:

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.6.2</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <groupId>bojankosta</groupId>
    <artifactId>export</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>war</packaging>
    <name>export</name>
    <description>Export db</description>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <java.version>11</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-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>

    </dependencies>

    <build>
        <finalName>${artifactId}</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

应用特性:

server.servlet.context-path=/export

控制器:

package bojankosta.export.controller;

import bojankosta.export.service.ContinentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class BasicController {

       @Autowired
       private ContinentService continentService;

       @GetMapping("/")
       public String getAllData()  {
              return continentService.export();
       }

       @GetMapping("/test")
       @ResponseBody
       public String currentUserName() {
              return "Hello";
       }

}



共有2个答案

薛经纶
2023-03-14

您可以在构建文件中使用finalName属性(maven的pom.xml)

<finalName>export</finalName>

赵征
2023-03-14

404表示您正在点击的url不可用。当我们在外部应用服务器上部署代码时,它从根上下文(通常以项目名称开头)提供服务。您可以在日志中检查它所服务的是什么上下文,然后将其余endpoint附加到它。它会起作用的

 类似资料:
  • 问题内容: 例如我有一个功能: 我怎样才能返回AJAX后得到的? 问题答案: 因为请求是异步的,所以您无法返回ajax请求的结果(而同步ajax请求是一个 糟糕的 主意)。 最好的选择是将自己的回调传递给f1 然后,您将像这样致电:

  • 问题内容: 我在使用Ajax时遇到问题。 问题是,在获得ajax响应之前,它会返回cnt。因此它总是返回NULL。 有没有办法使正确的返回响应值? 谢谢! 问题答案: 由于AJAX请求是异步的,因此您的cnt变量将在请求返回并调用成功处理程序之前返回。 我建议重构您的代码以解决此问题。 一种方法是从AJAX请求的成功处理程序中调用调用了GetGrantAmazonItemCnt()的任何函数,此方

  • 我想在下面返回JSON。 {“名字”:“杰基”} 新来的春靴在这里。1天大。有没有合适的方法可以做到这一点?

  • 问题内容: 我创建了一个自定义错误类型来包装错误,以便更轻松地在Golang中进行调试。当有打印错误时它可以工作,但是现在引起了恐慌。 演示版 当我调用一个函数时,它不会返回错误,我仍然应该能够包装该错误。 预期的行为是,如果错误为nil,则应该简单地忽略它,不幸的是,它会做相反的事情。 我希望它能打印出来。而是即使错误为nil也会打印。 问题答案: 正在将err变量与nil进行比较,但实际上它是

  • 我编写了controller,它为每个映射使用了不同的值。现在我将它简化为对所有映射使用相同的值,但是我不知道如何使test工作,因为它在每个映射上都返回404。 这里是我的控制器: 和我的测试: 404及以下所有测试结果: 在org.springframework.test.util.assertionerrors.fail(assertionerrors.java:59)在org.spring

  • 问题内容: 有人可以向我解释为什么返回类型 只是返回类型 我不明白为什么地图会映射到一个以上的值。TIA。 问题答案: 它返回具有 相同 名称的控件的所有参数值。 例如: 要么 任何选中/选择的值都将以以下形式出现: 对于表中的多个选择它也很有用: 与…结合

  • 问题内容: 我有一类这样的方法: 我如何在另一个类中调用此方法? 问题答案: 1. 如果要从中调用该方法的类位于同一包中,则创建该类的实例并调用该方法。 2. 使用 3. 最好有个赞等等。 例如:

  • 这三个函数的返回类型提示有什么不同吗? 他们都应该有< code>- 提问的动机是这个问题,这个很好的答案,以及我正在学习类型提示的事实。