背景
最近使用若依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的程序包罷了。
<!-- 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