1. 程式人生 > >JAVA war包部署到tomcat,jar包衝突問題的解決辦法,以及原理剖析。

JAVA war包部署到tomcat,jar包衝突問題的解決辦法,以及原理剖析。

1.問題描述

如果我們的java工程需要引入javax.servlet,jsp-api 等jar包。將工程編譯為war包後,部署到tomcat伺服器上當訪問這些包相關類時就會報錯,錯誤提示如下。原因就是我們war包裡面的jar包與tomcat依賴的jar包衝突了。


2.解決辦法:

2.1 檢視哪些jar包出現了衝突:

tomcat安裝目錄下有個lib資料夾,war包中同樣有個lib資料夾,兩個資料夾中相同的jar包就是衝突的jar包。

2.2 解決版本就是將war包中的衝突jar包刪除掉就可以了。(對於maven工程,將pom依賴 新增<scope>provided</scope>,war中就回刪除對應的jar包。)

3.為什麼war包中刪除了對應的jar包,只要tomcat中有同樣的jar包程式就能正常執行?

war包實質上包含了開發的java程式碼編譯出的class檔案,以及依賴的jar包。編譯時這些jar包的作用只是起到檢查import檔案是否找得到的作用,對生成class檔案是沒有作用的。因此最後程式執行時,使用war包中的jar包還是用tomcat中的jar包是一樣的效果。