jstl Maven 依賴致使的 Jar 包衝突

  • 概述

  Jar 包衝突是平常開發過程當中,時常會遇到的問題。本文介紹由 jstl 的 Maven 依賴致使的 Jar 包衝突問題,以及對應的解決方法。java

  • jstl 的 Maven 依賴配置
        <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

相關文章
相關標籤/搜索