springboot 部署到tomcat6遇到404的问题

本文解决SpringBoot应用部署到Tomcat6时出现的404错误问题,主要是由于Tomcat版本过低不支持SpringBoot所需的servlet版本。通过升级到Tomcat8解决了兼容性问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

springboot 部署到tomcat6遇到404的问题,其实是因为springboot只支持servlet2.5以上的,tomcat6是2.5以下的导致报错,参考如下网址:

bdbrowser://snapshot/?cache=http%3A%2F%2Fcache.baiducontent.com%2Fc%3Fm%3D9f65cb4a8c8507ed50f0893b4853cb374504de3e6996cc44228b8e0dc43f111f1c21fef93a261605d3c47a671df50f03b4%26newp%3D8e609a15809301f21dacc33e6014&url=http%3A%2F%2Fwww.cnblogs.com%2Fweixliu%2Fp%2F6432342.html

https://blog.youkuaiyun.com/gege87417376/article/details/79204183

   注:如果你的tomcat是tomcat6版本,那很大可能你会遇到如下两个问题:

第一个问题是: 当你按照网上的配置,配置tomcat时,放在tomcat6下面,会遇到如下问题,我的解决方案是删除掉webapps对应项目lib文件夹下的tomcat-embed-core-8.5,但是启动仍然报错,接着看下一步:

信息: validateJarFile(D:\allone\ex2.6\Ex02-Bank\tomcat6113\webapps\RuoYi\WEB-INF\lib\tomcat-embed-core-8.5.31.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class

    这个上面的文章有说:是因为

     所以当我遇到这个问题之后,我尝试更换成tomcat8,不需要额外配置web.xml或者引入


   启动就正常,就能够访问项目了.总结一下当你遇到404的错误时,请先确认一下你的tomcat是否为8,请更换成tomcat8,即可解决问题:

   注意别忘了在tomcat的server.xml配置的你的项目war包名称:


   我的启动java类和pom.xml文件如下:

package com.ruoyi;

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

/**
 * web容器中进行部署
 * 
 * @author ruoyi
 */
public class RuoYiServletInitializer extends SpringBootServletInitializer
{
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application)
    {
        return application.sources(RuoYiApplication.class);
    }

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

}
 
<?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.ruoyi</groupId>
   <artifactId>RuoYi</artifactId>
   <version>2.0.0</version>
   <!--<packaging>jar</packaging>-->
   <packaging>war</packaging>

   <name>RuoYi</name>
   <description>江湾党建管理系统</description>

   <parent>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-parent</artifactId>
      <version>2.0.3.RELEASE</version>
      <relativePath />
   </parent>

   <properties>
      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
      <java.version>1.8</java.version>
      <shiro.version>1.3.2</shiro.version>
      <thymeleaf.extras.shiro.version>2.0.0</thymeleaf.extras.shiro.version>
      <mybatis.spring.boot.starter.version>1.1.1</mybatis.spring.boot.starter.version>
      <pagehelper.spring.boot.starter.version>1.2.3</pagehelper.spring.boot.starter.version>
      <fastjson.version>1.2.31</fastjson.version>
      <druid.version>1.0.28</druid.version>
      <commons.io.version>2.5</commons.io.version>
      <commons.fileupload.version>1.3.3</commons.fileupload.version>
      <bitwalker.version>1.19</bitwalker.version>
      <lombok.version>1.16.18</lombok.version>
      <velocity.version>1.7</velocity.version>
      <kaptcha.version>2.3.2</kaptcha.version>
      <swagger.version>2.7.0</swagger.version>
      <jsoup.version>1.11.3</jsoup.version>
   </properties>

   <dependencies>

      <!-- SpringBoot 核心包 -->
      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter</artifactId>
         <!-- tomcat发布所需 -->
           <exclusions>
                <exclusion>
                    <artifactId>spring-boot-starter-tomcat</artifactId>
                    <groupId>org.springframework.boot</groupId>
                </exclusion>
            </exclusions>
            
      </dependency>
      
      <!-- tomcat发布所需 -->
       <dependency>
          <groupId>javax.servlet</groupId>
          <artifactId>javax.servlet-api</artifactId>
          <version>3.1.0</version>
          <scope>provided</scope>
      </dependency>

      <!--打包tomcat所使用-->
      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-legacy</artifactId>
         <version>1.1.0.RELEASE</version>
      </dependency>


      <!-- SpringBoot 测试 -->
      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-test</artifactId>
         <scope>test</scope>
      </dependency>

      <!-- SpringBoot 拦截器 -->
      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-aop</artifactId>
      </dependency>

      <!-- SpringBoot Web容器 -->
      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-web</artifactId>
      </dependency>

      <!-- SpringBoot集成thymeleaf模板 -->
      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-thymeleaf</artifactId>
      </dependency>

      <!-- spring-boot-devtools -->
      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-devtools</artifactId>
         <optional>true</optional> <!-- 表示依赖不会传递 -->
      </dependency>

      <!-- thymeleaf网页解析 -->
      <dependency>
         <groupId>net.sourceforge.nekohtml</groupId>
         <artifactId>nekohtml</artifactId>
      </dependency>

      <!-- Mysql驱动包 -->
      <dependency>
         <groupId>mysql</groupId>
         <artifactId>mysql-connector-java</artifactId>
      </dependency>

      <!-- SpringBoot集成mybatis框架 -->
      <dependency>
         <groupId>org.mybatis.spring.boot</groupId>
         <artifactId>mybatis-spring-boot-starter</artifactId>
         <version>${mybatis.spring.boot.starter.version}</version>
      </dependency>

      <!-- pagehelper 分页插件 -->
      <dependency>
         <groupId>com.github.pagehelper</groupId>
         <artifactId>pagehelper-spring-boot-starter</artifactId>
         <version>${pagehelper.spring.boot.starter.version}</version>
      </dependency>

      <!--阿里数据库连接池 -->
      <dependency>
         <groupId>com.alibaba</groupId>
         <artifactId>druid</artifactId>
         <version>${druid.version}</version>
      </dependency>

      <!--常用工具类 -->
      <dependency>
         <groupId>org.apache.commons</groupId>
         <artifactId>commons-lang3</artifactId>
      </dependency>

      <!--io常用工具类 -->
      <dependency>
         <groupId>commons-io</groupId>
         <artifactId>commons-io</artifactId>
         <version>${commons.io.version}</version>
      </dependency>

      <!--文件上传工具类 -->
      <dependency>
         <groupId>commons-fileupload</groupId>
         <artifactId>commons-fileupload</artifactId>
         <version>${commons.fileupload.version}</version>
      </dependency>

      <!--Shiro核心框架 -->
      <dependency>
         <groupId>org.apache.shiro</groupId>
         <artifactId>shiro-core</artifactId>
         <version>${shiro.version}</version>
      </dependency>

      <!-- Shiro使用Srping框架 -->
      <dependency>
         <groupId>org.apache.shiro</groupId>
         <artifactId>shiro-spring</artifactId>
         <version>${shiro.version}</version>
      </dependency>

      <!-- Shiro使用EhCache缓存框架 -->
      <dependency>
         <groupId>org.apache.shiro</groupId>
         <artifactId>shiro-ehcache</artifactId>
         <version>${shiro.version}</version>
      </dependency>

      <!-- thymeleaf模板引擎和shiro框架的整合 -->
      <dependency>
         <groupId>com.github.theborakompanioni</groupId>
         <artifactId>thymeleaf-extras-shiro</artifactId>
         <version>${thymeleaf.extras.shiro.version}</version>
      </dependency>

      <!-- 阿里JSON解析器 -->
      <dependency>
         <groupId>com.alibaba</groupId>
         <artifactId>fastjson</artifactId>
         <version>${fastjson.version}</version>
      </dependency>

      <!-- 解析客户端操作系统、浏览器等 -->
      <dependency>
         <groupId>eu.bitwalker</groupId>
         <artifactId>UserAgentUtils</artifactId>
         <version>${bitwalker.version}</version>
      </dependency>

      <!--Spring框架基本的核心工具-->
      <dependency>
         <groupId>org.springframework</groupId>
         <artifactId>spring-context-support</artifactId>
      </dependency>

      <!-- 定时任务 -->
      <dependency>
         <groupId>org.quartz-scheduler</groupId>
         <artifactId>quartz</artifactId>
         <exclusions>
            <exclusion>
               <groupId>com.mchange</groupId>
               <artifactId>c3p0</artifactId>
            </exclusion>
         </exclusions>
      </dependency>

      <!--velocity代码生成使用模板 -->
      <dependency>
         <groupId>org.apache.velocity</groupId>
         <artifactId>velocity</artifactId>
         <version>${velocity.version}</version>
      </dependency>

      <!--验证码 -->
      <dependency>
         <groupId>com.github.penggle</groupId>
         <artifactId>kaptcha</artifactId>
         <version>${kaptcha.version}</version>
         <exclusions>
            <exclusion>
               <artifactId>javax.servlet-api</artifactId>
               <groupId>javax.servlet</groupId>
            </exclusion>
         </exclusions>
      </dependency>

      <!-- swagger2-->
      <dependency>
         <groupId>io.springfox</groupId>
         <artifactId>springfox-swagger2</artifactId>
         <version>${swagger.version}</version>
      </dependency>

      <!-- swagger2-UI-->
      <dependency>
         <groupId>io.springfox</groupId>
         <artifactId>springfox-swagger-ui</artifactId>
         <version>${swagger.version}</version>
      </dependency>

      <!-- HTML解析器 -->
      <dependency>
         <groupId>org.jsoup</groupId>
         <artifactId>jsoup</artifactId>
         <version>${jsoup.version}</version>
      </dependency>
      
      <!-- excel工具 -->
      <dependency>
         <groupId>org.apache.poi</groupId>
         <artifactId>poi-ooxml</artifactId>
         <version>3.9</version>
      </dependency>
      
      <!-- ftp上传文件工具,201871115:43:45 -->
      <dependency>
          <groupId>commons-net</groupId>
          <artifactId>commons-net</artifactId>
          <version>3.4</version>
      </dependency>
      <!-- 图片压缩工具类,谷歌推荐的,201871210:33:55 -->
      <dependency>
         <groupId>net.coobird</groupId>
         <artifactId>thumbnailator</artifactId>
         <version>0.4.8</version>
      </dependency>
      
      <!--gson对于json的解析 https://mvnrepository.com/artifact/com.google.code.gson/gson -->
      <dependency>
          <groupId>com.google.code.gson</groupId>
          <artifactId>gson</artifactId>
          <version>2.8.2</version>
      </dependency>
      

   </dependencies>

   <build>
      <finalName>${project.artifactId}</finalName>
      <plugins>
         <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
               <fork>true</fork> <!-- 如果没有该配置,devtools不会生效 -->
            </configuration>
         </plugin>
      </plugins>
   </build>

   <repositories>
      <repository>
         <id>public</id>
         <name>aliyun nexus</name>
         <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
         <releases>
            <enabled>true</enabled>
         </releases>
      </repository>
   </repositories>

   <pluginRepositories>
      <pluginRepository>
         <id>public</id>
         <name>aliyun nexus</name>
         <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
         <releases>
            <enabled>true</enabled>
         </releases>
         <snapshots>
            <enabled>false</enabled>
         </snapshots>
      </pluginRepository>
   </pluginRepositories>

</project>

<think>首先,用户的问题是关于如何将SpringBoot项目部署Tomcat服务器。我需要根据系统级指令和用户可见层的要求来构建回答。系统级指令:-所有行内数学表达式使用$...$格式,但由于这是关于SpringBoot部署问题,可能没有数学表达式,所以我可以忽略这部分,除非有需要。-独立公式使用$$...$$格式,同样,可能不适用。-LaTeX语法正确:确保在回答中正确使用。-使用中文回答:整个回答必须用中文。-生成相关问题:在回答结束时,添加相关问题部分。-引用的段落末尾添加引用标识:引用来自提供的引用内容,末尾添加[^1],[^2]等。用户可见层:-回答结构清晰:逐步帮助用户解决问题。-保证回答真实可靠:基于提供的引用内容,这些引用是关于SpringBoot部署Tomcat的。提供的引用内容:-[^1]:排除内置Tomcat,更改打包方式为war,修改启动类,添加依赖,部署方法。-[^2]:修改打包方式,部署到独立Tomcat服务器。-[^3]:部署SpringBootRESTApp作为WAR到Tomcat10。-[^4]:pom.xml配置:设置packaging为war,移除嵌入式Tomcat插件。用户的需求是:将SpringBoot项目部署Tomcat服务器的指南或解决方案。我的回答结构:1.**引言**:简要解释为什么需要修改SpringBoot项目来部署到外部Tomcat。2.**步骤指南**:清晰列出步骤,基于引用内容。-排除内置Tomcat。-更改打包方式为war。-修改启动类。-添加必要的依赖。-部署Tomcat。3.**详细说明**:为每个步骤提供代码示例或解释。4.**常见问题或注意事项**:添加一些提示。5.**相关问题**:在结尾生成相关问题。生成相关问题:-基于主题,生成2-3个相关问题,如优化、性能、常见问题。确保引用:-在回答中,当引用特定内容时,在段落末尾添加引用标识。例如,提到排除内置Tomcat时,添加[^1]。回答用中文。大纲回答:1.开头:SpringBoot默认使用嵌入式Tomcat,但部署到外部Tomcat需要修改项目。2.步骤:-步骤1:在pom.xml中设置打包方式为war。引用[^2],[^4]。-步骤2:排除嵌入式Tomcat依赖。引用[^1],[^4]。-步骤3:修改启动类。引用[^1]。-步骤4:添加依赖(如果需要)。引用[^1]。-步骤5:打包项目并部署Tomcat。引用[^1],[^3]。3.代码示例:提供简单的代码片段。4.结尾:相关问题。相关问题示例:1.部署后出现404错误如何解决?2.如何优化SpringBoot应用在Tomcat上的性能?3.SpringBoot部署Tomcat有哪些常见问题?</think>### 如何将Spring Boot项目部署Tomcat服务器 Spring Boot 默认使用嵌入式 Tomcat 服务器运行应用,但在生产环境中,您可能需要将项目部署到独立的 Tomcat 服务器上。这需要对项目进行一些修改,以确保兼容性和正确部署。以下是一个清晰的步骤指南,基于实际开发实践和可靠参考。每个步骤都包含代码示例和注意事项,帮助您逐步完成部署。 #### 步骤 1: 修改打包方式为 WAR 在 Spring Boot 项目中,默认打包方式是 JAR(用于嵌入式服务器),但部署到外部 Tomcat 需要改为 WAR 格式。 - 在 `pom.xml` 文件中,添加或修改 `<packaging>` 标签: ```xml <packaging>war</packaging> ``` 这确保项目构建时生成 WAR 文件,而不是 JAR 文件[^2]。 #### 步骤 2: 排除内置 Tomcat 依赖 Spring Boot 的 starter 依赖包含嵌入式 Tomcat,必须排除它,以避免冲突。 - 在 `pom.xml` 中,添加以下依赖配置: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> <!-- 表示 Tomcat 由外部服务器提供 --> </dependency> ``` 这确保在构建时排除嵌入式 Tomcat,依赖项由外部 Tomcat 服务器提供[^1][^4]。 #### 步骤 3: 修改启动类 Spring Boot 的默认启动类需要扩展 `SpringBootServletInitializer` 以支持外部 Tomcat 部署。 - 打开主启动类(通常名为 `Application.java`),修改代码如下: ```java 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 Application extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(Application.class); // 配置外部服务器启动 } public static void main(String[] args) { SpringApplication.run(Application.class, args); } } ``` 这一步使项目能通过 Tomcat 的 Servlet 容器初始化[^1]。 #### 步骤 4: 添加必要依赖(可选) 如果项目使用特定功能(如 JSP),可能需要添加额外依赖。 - 在 `pom.xml` 中,添加 Tomcat 相关依赖(通常已通过步骤 2 处理,但检查是否需要): ```xml <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <scope>provided</scope> </dependency> ``` 确保所有依赖的 scope 正确设置,避免打包冲突[^4]。 #### 步骤 5: 打包并部署Tomcat 完成代码修改后,构建项目并部署 WAR 文件到 Tomcat 服务器。 1. **打包项目**: - 在项目根目录运行 Maven 命令: ``` mvn clean package ``` 生成的 WAR 文件位于 `target/` 目录下(例如 `your-project-name.war`)。 2. **部署Tomcat**: - **方法一(直接部署)**: 将 WAR 文件复制到 Tomcat 的 `webapps/` 目录下,启动 Tomcat 服务器(运行 `bin/startup.sh` 或 `bin/startup.bat`)。Tomcat 会自动解压并部署应用。 - **方法二(IDEA 集成)**: 在 IntelliJ IDEA 中,配置 Tomcat 服务器: - 打开 "Run/Debug Configurations",添加 "Tomcat Server"。 - 指定 Tomcat 安装路径,并在 "Deployment" 选项卡中添加 WAR 文件。 启动服务器后,访问 `http://localhost:8080/your-project-name` 验证部署[^1][^3]。 #### 常见问题与注意事项 - **404 错误**:如果部署后访问 URL 出现 404,检查 WAR 文件名是否与上下文路径匹配,或确保启动类正确扩展 `SpringBootServletInitializer`[^1]。 - **版本兼容性**:确保 Tomcat 版本与 Spring Boot 兼容(例如 Tomcat 10 支持 Spring Boot 3.x)[^3]。 - **性能优化**:在外部 Tomcat 上,可调整 `server.xml` 中的连接池参数以提高性能。 - **测试建议**:在部署前,本地测试 WAR 文件是否正常运行(例如使用 `java -jar your-project.war`)。 通过以上步骤,您的 Spring Boot 项目应能成功部署Tomcat 服务器。如果您遇到问题,可参考 Spring Boot 官方文档或社区资源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值