即使 WAR 文件位于正确的文件夹中,Tomcat 服务器也会出现 404 错误

问题描述 投票:0回答:2

我是 Maven 和构建 Java 项目的新手。所以我使用Maven构建了一个Java项目,并将WAR文件复制到webapps文件夹中。文件名是“print”,我将其复制到位于以下位置的Web应用程序中:/opt/homebrew/Cellar/tomcat/10.0.22/libexec/webapps

当我尝试打开:http://localhost:8080/print/ 时,我收到 HTTP 状态 404 – 未找到错误。

该路径在 Tomcat Web 应用程序管理器中可用: enter image description here

该路径在 Tomcat Web 应用程序管理器中可用:

我尝试遵循此处提供的一些指南,但没有任何效果。不知道是什么问题。

以下是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.springhow.example</groupId>
  <artifactId>hello-world</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>

  <name>hello-world</name>
  <description>Demo project for Spring Boot</description>

  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.3.2.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-tomcat</artifactId>
      <scope>provided</scope>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
    </plugins>
  </build>
</project>
java maven tomcat devops
2个回答
5
投票

从版本 10 开始,tomcat 发生了变化,开始支持 jakarta servlet 并从 javax 迁移。 所以我怀疑你的战争需要首先迁移。为此,他们已经提供了一套指南,您可以在他们的官方页面上阅读。

目前,

  1. 您可以尝试创建一个与 webapps 文件夹平行的名为 webapps-javaee 的文件夹。
  2. 将您的 war 文件复制到此目录。
  3. 从webapps目录中删除war文件和war文件中的膨胀文件夹
  4. 再次启动应用程序。 您会注意到,应用程序的启动需要稍微多一些的时间。 希望这能像解决我的问题一样解决您的问题。

0
投票

我的 war 文件在我的 PC 上运行 Tomcat 9 和 Java 11。
但是在服务器上运行时却出现404错误。服务器有 Tomcat 9 但运行 Java 8。

因此,即使 Tomcat 9 在 Java 8 上运行,您最终也会遇到错误。尤其是更新的库(Grails 5、servlet v.5 等)

将服务器升级到 Java 11 后,404 错误消失了。

我认为您不需要 Tomcat 10 和 JavaEE 功能来解决该问题。

© www.soinside.com 2019 - 2024. All rights reserved.