若依4.8.1打包war后在Tomcat无法运行,404报错的一个解决方法

背景

最近使用若依4.8.1进行二次开发,接着尝试打包成war包进行部署,结果出现了404,提示"HTTP状态 404 - 未找到,请求的资源/ruoyi-admin/不可用",翻了网上的教程,包括看了官方的解疑都没有说到该情况。最后经过尝试,发现了是Tomcat的版本不对无法运行。

若依打包war教程

由于的主要目的是从jar到war的过渡,因此把这个过程也记录下来,不需要的朋友可以跳过。

jar包运行

项目在开发的过程中,打包为jar包是可以运行的。打包的时候使用maven的package即可,打包出ruoyi-admin.jar,使用命令可以正常运行。

复制代码
java -jar ruoyi-admin.jar

在使用过程中,假如出现中文乱码,可以在运行程序前使用命令:

复制代码
chcp 65001

运行结果这里就不截图了哈。

修改打包为war

从官网教程中,打包war只需要在ruoyi-admin/pom.xml中,修改<packaging>jar</packaging>为<packaging>war</packaging>即可,如图

不过我改了这里之后,在最后打包的时候,ruoyi-admin失败了。

这个问题我找了maven失败的原因,最后发现是maven的war插件版本导致的,所以我这里将maven-war-plugin的<version>3.0.0</version>改为了<version>3.4.0</version>,最后成功打包出war包。

移除嵌入式tomcat插件

在官网和有关的教程中,还提到移除嵌入式tomcat插件,这里我刚好进行了尝试,其实移不移除都可以运行,只不过打包后多了4M的程序包罢了。

XML 复制代码
        <!-- SpringBoot Web容器 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <!-- 移除嵌入式tomcat插件 -->
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-tomcat</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

Tomcat部署

Tomcat11中部署

随后我把ruoyi-admin.war放在apache-tomcat-11.0.9的webapps目录,tomcat已经部署成功,但是不可访问。

到了这一步,查了许多文档,包括官网针对这个问题的答复,似乎都没有什么问题,知道我看了一个回答,灵光一闪想到是不是Tomcat版本的原因呢。因为在Tomcat控制台中,有提示到ruoyi-admin已经部署完成,但是没有看到熟悉的若依启动界面。正好我的电脑有个Tomcat9,可以用来测试一下。

Tomcat9中部署

同样的,把war包放到apache-tomcat-9.0.86/webapps路径下,再启动tomcat,这次发现除了提示部署完成,还直接把熟悉的若依启动页面加载出来了,说明这次是真的可以启动了。

我Tomcat9的启动端口是8088,现在访问若依地址,正常访问!

http://localhost:8088/ruoyi-admin/

原因分析

可以使用了之后,我看了启动日志,发现我使用的Tomcat11,使用的java21,而Tomcat9使用的Java8,日志分别如下:

Tomcat9

12-Sep-2025 00:47:08.799 信息 main org.apache.catalina.startup.VersionLoggerListener.log Java 环境变量: D:\Software\Java\jre1.8.0_361

12-Sep-2025 00:47:08.799 信息 main org.apache.catalina.startup.VersionLoggerListener.log Java虚拟机版本: 1.8.0_361-b09

Tomcat11

12-Sep-2025 00:54:44.973 信息 main org.apache.catalina.startup.VersionLoggerListener.log Java 环境变量: D:\Software\Java\jdk-21.0.2

12-Sep-2025 00:54:44.973 信息 main org.apache.catalina.startup.VersionLoggerListener.log Java虚拟机版本: 21.0.2+13-58

所以这里就是问题所在了。

若依4.8.1,是基于Java8开发的,所以也只能在Java8的环境中运行,毕竟Java8和21的版本差异还是挺大的,不能运行也可以理解了。

其实我能找到和解决这个问题也纯属偶然,因为我是从Java8直接过渡到Java21的,所以本地刚好有这两个Java环境,而且由于历史因素保留了两个Tomcat,算是误打误撞找到的解决方法。这也就难怪官方都没办法复现问题,网络上有关的提问和答案也比较少了。估计除了我,都没几个人会刚好有这么蛋疼的2*2的环境了。

好了,到这里问题就解决啦。觉得有用的朋友支持一下吧!

参考链接:

手把手教如何将若依前后端分离项目在Tomcat下部署教程 - 简称LCH - 博客园

环境部署 | RuoYi

activiti项目打war放到tomcat9中运行,提示 404 未找到 · Issue #I6UUYS · 若依/RuoYi - Gitee.com

相关推荐
iiiiyu3 分钟前
IO流相关编程题
java·大数据·开发语言·数据结构·数据库·mysql
ANnianStriver6 分钟前
PetLumina 06 — 图片上传全链路
java·ai·ai编程·文件上传·cos·腾讯云对象存储
这个DBA有点耶10 分钟前
核心系统的高可用与容灾架构:从主从到两地三中心全面解析
java·开发语言·数据库·sql·mysql·架构·运维开发
AC赳赳老秦13 分钟前
OpenClaw+AWS 深度应用:自动生成 CloudFormation 模板、批量管理 S3 存储桶
java·python·面试·职场和发展·php·deepseek·openclaw
用户2986985301414 分钟前
Java 处理 Word 文档:如何批量修改超链接地址与显示文本
java·后端
asdfg125896315 分钟前
BeanListHandler的通俗理解
java·数据库·oracle
namexingyun29 分钟前
GPT-5.6 前端生成能力深度解析:kindle/kepler/Levi三版本UI实测与技术推演
java·前端·人工智能·gpt·机器学习·ui
码界索隆31 分钟前
Python转Java系列:语法与类型系统
java·开发语言·python
asdfg125896333 分钟前
入门后端开发从一本Java书开始
java