Jar 包衝突是平常開發過程當中,時常會遇到的問題。本文介紹由 jstl 的 Maven 依賴致使的 Jar 包衝突問題,以及對應的解決方法。java
<dependency> <groupId>javax.servlet.jsp.jstl</groupId> <artifactId>jstl-api</artifactId> <version>1.2</version> </dependency> <dependency> <groupId>taglibs</groupId> <artifactId>standard</artifactId> <version>1.1.2</version> </dependency>
通常來講,只要 pom 文件配置好了 Maven 依賴後,通常都不會有太大的問題。但是,就是這麼一個簡單的依賴,致使了整個項目都沒法啓動了,通過一段時間的排查,最終鎖定了問題所在。api
Tomcat 類庫jsp
項目編譯後的類庫spa
從上面的2個截圖能夠看出,jsp-api 和 servlet-api 這2個 Jar 包重複了,經過進一步的排查,最終確認項目編譯後的類庫多出來的2個 Jar 是因爲 jstl-api Jar 包的依賴,經過 Maven 編譯到項目的類庫中的,與 Tomcat 的類庫中對應的2個 Jar 包起了衝突,找到問題的原由後,對 pom 文件作了調整,不編譯 jstl-api Jar 包的依賴的 Jar 包便可解決問題,具體調整以下:3d
<dependency> <groupId>javax.servlet.jsp.jstl</groupId> <artifactId>jstl-api</artifactId> <version>1.2</version> <exclusions> <exclusion> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> </exclusion> <exclusion> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>taglibs</groupId> <artifactId>standard</artifactId> <version>1.1.2</version> </dependency>
歡迎轉載,轉載必須標明出處 code