1. 程式人生 > >通過jsp-api體驗jar包之間的衝突

通過jsp-api體驗jar包之間的衝突

我們在index.jsp寫一個EL表示式:${pageContext.request.contextPath },可以看到,在寫到.request時是沒有提示的,而在寫到.contextPath時提示又有了,這是因為pageContext是屬於jsp-api.jar的,我們沒有把這個依賴加進來,所以沒有提示,request是屬於servlet-api.jar的,它的執行時環境(也就是依賴)我們已經導進來了,所以它後面有提示
所以我們要把jsp-api.jar的依賴也匯入到pom.xml

<dependency>
            <groupId>javax.servlet.jsp</groupId
>
<artifactId>jsp-api</artifactId> <version>2.1.3-b06</version> <scope>provided</scope> </dependency>

這樣就可以有提示也不報錯了
這裡說個小技巧:可以看到對於這種在專案中提示有錯誤
這裡寫圖片描述
但是開啟jsp頁面後又什麼都沒有的錯誤
這裡寫圖片描述
我們可以
這裡寫圖片描述
在上圖中Quick Access中輸入Problems
這裡寫圖片描述
這樣我們就可以看到錯誤了

如果我們將下面程式碼中的<scope>provided</scope>改為<scope>compile</scope>,可能會出現很嚴重的問題,報一個空指標異常java.lang.NullPointerException,(為什麼說可能呢?在我的電腦上測試時我怎麼弄也沒把這個異常弄出來,但是在學習的視訊裡是會報異常的………)這個是因為你匯入的jar包衝突導致的,因為有的jar包Tomcat伺服器上已經有了的,但是你又使用compile依賴範圍把重複的jar包部署上去了,所以會報錯

<dependency>
            <groupId
>
javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.1.3-b06</version> <scope>provided</scope> </dependency>