通過jsp-api體驗jar包之間的衝突
阿新 • • 發佈:2019-01-04
我們在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>