若依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的程序包罷了。

        <!-- 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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/98030.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/98030.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/98030.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

華清遠見25072班網絡編程學習day6

重點內容&#xff1a;數據庫基本概念:數據&#xff08;Data&#xff09;&#xff1a;能夠輸入計算機并能被計算機程序識別和處理的信息集合數據 &#xff08;Database&#xff09;數據庫是在數據庫管理系統管理和控制之下&#xff0c;存放在存儲介質上的數據集合重要概念&#…

機器學習-網絡架構搜索

Neural Architecture Search&#xff08;NAS&#xff09; 一個神經網絡有不同類型的超參數 拓撲結構&#xff1a;resnet&#xff0c;mobilenet 單獨層&#xff1a;核大小&#xff0c;卷積層的通道&#xff0c;輸出隱藏單元的個數NAS自動設計神經網絡 如何設計搜索空間 如何探索…

云手機在辦公領域中自動化的應用

云手機在辦公自動化領域正逐漸展現出強大的潛力&#xff0c;以下是其在辦公中自動化應用的多方面介紹&#xff1a;企業借助云手機搭載的辦公軟件&#xff0c;可實現文檔處理自動化&#xff0c;對于重復性文檔任務&#xff0c;如制作每月固定格式的銷售報告、財務報表等&#xf…

c++多線程(3)------休眠函數sleep_for和sleep_until

操作系統&#xff1a;ubuntu22.04 IDE:Visual Studio Code 編程語言&#xff1a;C11 算法描述 這兩個函數都定義在 頭文件中&#xff0c;屬于 std::this_thread 命名空間&#xff0c;用于讓當前線程暫停執行一段時間。函數功能sleep_for(rel_time)讓當前線程休眠一段相對時間&…

Intel RealSense D455深度相機驅動安裝與運行

Intel RealSense D455深度相機安裝過程遇到過一些報錯&#xff0c;所以記錄一下安裝過程&#xff01;&#xff01;&#xff01;以后方便回顧。 1.安裝最新的IntelRealSense SDK2.0 (1) 注冊服務器的公鑰 sudo apt-get update && sudo apt-get upgrade && su…

從異步到半同步:全面解讀MySQL復制的數據一致性保障方案

MySQL 主從復制&#xff08;Replication&#xff09;是其最核心的高可用性和擴展性功能之一。它的原理是將一個 MySQL 實例&#xff08;稱為主庫 Master&#xff09;的數據變更&#xff0c;自動同步到另一個或多個 MySQL 實例&#xff08;稱為從庫 Slave&#xff09;的過程。下…

PostgreSQL GIN 索引揭秘

文章目錄什么是GIN Index?示例場景GIN Index的原理GIN Index結構MetapageEntriesLeaf PagesEntry page 和 Leaf page 的關系Posting list 和posting tree待處理列表&#xff08;Pending List&#xff09;進階解讀GIN index索引結構總結什么是GIN Index? GIN (Generalized In…

開源多模態OpenFlamingo橫空出世,基于Flamingo架構實現圖像文本自由對話,重塑人機交互未來

注&#xff1a;此文章內容均節選自充電了么創始人&#xff0c;CEO兼CTO陳敬雷老師的新書《GPT多模態大模型與AI Agent智能體》&#xff08;跟我一起學人工智能&#xff09;【陳敬雷編著】【清華大學出版社】 清華《GPT多模態大模型與AI Agent智能體》書籍配套視頻課程【陳敬雷…

電子衍射模擬:基于GPU加速的MATLAB/Julia實現

點擊 “AladdinEdu&#xff0c;同學們用得起的【H卡】算力平臺”&#xff0c;注冊即送-H卡級別算力&#xff0c;80G大顯存&#xff0c;按量計費&#xff0c;靈活彈性&#xff0c;頂級配置&#xff0c;學生更享專屬優惠。 引言&#xff1a;電子衍射模擬的重要性與計算挑戰 電子…

easyExcel動態應用案例

代碼鏈接&#xff1a;https://download.csdn.net/download/ly1h1/919402991.案例說明&#xff1a;1.1.導入功能導入數據實現轉換成 List<List<String>> headers和 List<List<String>> datas&#xff0c;后續補充可以與數據模型注解結合&#xff0c;形…

【數據結構入門】排序算法(5):計數排序

目錄 1. 比較排序和非比較排序 2. 計數排序的原理 2.1 計數排序的弊端 3.代碼復現 3.1 代碼分析 3.2 排序核心 3.3 時間、空間復雜度 1. 比較排序和非比較排序 比較排序是根據排序元素的具體數值比較來進行排序&#xff1b;非比較排序則相反&#xff0c;非比較排序例如&…

輸入3.8V~32V 輸出2A 的DCDC降壓芯片SCT9320

同志們&#xff0c;今天來個降壓芯片SCT9320。輸入3.8V~32V&#xff0c;輸出最高可以達到2A。0.8V的參考電壓。500k的開關頻率。一共八個引腳&#xff0c;兩個NC&#xff08;為什么不做成六個引腳呢&#xff1f;&#xff09;。EN引腳懸空或者接到VIN都可以直接啟動&#xff0c;…

C++類和對象詳解(2);初識類的默認成員函數

1.類的默認成員函數默認成員函數就是用戶沒有顯示實現&#xff0c;編譯器會自動生成的成員函數稱為默認成員函數。一個類我們不寫的情況下編譯器會默認生成以下的6個默認成員函數。&#xff08;1&#xff09;構造函數&#xff1a;主要完成初始化的工作&#xff08;2&#xff09…

PLC通信 Tpc客戶端Socket

1.PLC通信 namespace _2.PLC通信 {public partial class Form1 : Form{public Form1(){InitializeComponent();}//連接//1.型號: 跟PLC溝通 使用哪個型號的PLC//2.IP 同上//3.機臺號:同上//4.插槽號:同上Plc plc new Plc(CpuType.S71200, "192.168.25.80", 0, 1);pr…

Android 開發實戰:從零到一集成 espeak-ng 實現中文離線 TTS(無需賬號開箱即用)

簡介 在移動應用開發中,語音合成(TTS)技術是提升用戶體驗的重要工具。然而,許多開發者在集成 TTS 時面臨依賴網絡、需注冊賬號、功能受限等問題。本文將帶你從零開始,通過開源項目 espeak-ng,實現無需賬號、開箱即用的中文離線語音播報。 文章將覆蓋以下核心內容: esp…

直播APP集成美顏SDK詳解:智能美妝功能的開發實戰

在這個“顏值即正義”的時代&#xff0c;用戶對直播APP的第一印象&#xff0c;往往來自主播的畫面質量。高清的視頻固然重要&#xff0c;但如果缺少自然美顏和智能美妝功能&#xff0c;觀眾體驗就會大打折扣。于是&#xff0c;美顏SDK成了直播行業的“標配”。今天&#xff0c;…

C++內存管理:new與delete的深層解析

1. 引言在C的世界里&#xff0c;動態內存管理是一個核心話題。對于從C語言過渡到C的開發者來說&#xff0c;一個常見的困惑是&#xff1a;既然C語言的malloc和free依然可以在C中使用&#xff0c;為什么C還要引入new和delete這兩個操作符&#xff1f;本文將深入探討這兩對內存管…

【AI開發】【前后端全棧】[特殊字符] AI 時代的快速開發思維

&#x1f680; AI 時代的快速開發思維 —— 以 Django Vue3 為例的前后端分離快捷開發流程 一、AI 時代的開發新思路 在 AI 的加持下&#xff0c;軟件開發不再是“純體力活”&#xff0c;而是 思維工具自動化 的協作。 過去&#xff1a;需求 → 設計 → 開發 → 測試 → 上…

Day24_【深度學習(3)—PyTorch使用—張量的創建和類型轉換】

一、創建張量1.張量基本創建方式torch.tensor 根據指定數據創建張量 &#xff08;最重要&#xff09;torch.Tensor 根據形狀創建張量, 其也可用來創建指定數據的張量torch.IntTensor、torch.FloatTensor、torch.DoubleTensor 創建指定類型的張量1.1 torch.tensor# 方式一&…

3-12〔OSCP ? 研記〕? WEB應用攻擊?利用XSS提權

鄭重聲明&#xff1a; 本文所有安全知識與技術&#xff0c;僅用于探討、研究及學習&#xff0c;嚴禁用于違反國家法律法規的非法活動。對于因不當使用相關內容造成的任何損失或法律責任&#xff0c;本人不承擔任何責任。 如需轉載&#xff0c;請注明出處且不得用于商業盈利。 …