背景
最近使用若依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 - 博客园
activiti项目打war放到tomcat9中运行,提示 404 未找到 · Issue #I6UUYS · 若依/RuoYi - Gitee.com