1. 程式人生 > >解決Maven專案下新增HttpServletRequest 或 HttpServletResponse需引用的依賴包報錯

解決Maven專案下新增HttpServletRequest 或 HttpServletResponse需引用的依賴包報錯

今天在開發中遇到了一個問題,專案中需要HttpServletRequest  和 HttpServletResponse 但是我專案是用maven啟動的,需要手動匯入servlet-api.jar包

      我開始是這樣匯入的

<dependency> 
	<groupId>javax.servlet</groupId> 
	<artifactId>javax.servlet-api</artifactId> 
	<version>3.1.0</version> 
</dependency> 
但是專案中報了莫名其妙的錯誤
Caused by: java.lang.LinkageError: loader constraint violation: loader (instance of org/apache/catalina/loader/WebappClassLoader) previously initiated loading for a different type with name "javax/servlet/ServletContext"

查到的原因以及解決辦法

產生的原因是:tomcat中也有servlet-api包,這樣,發生了衝突

解決方法:新增<scope>provided</scope>,因為provided表明該包只在編譯和測試的時候用,所以,當啟動tomcat的時候,就不會衝突了,完整依賴如下:

<dependency> 
   <groupId>javax.servlet</groupId> 
   <artifactId>servlet-api</artifactId> 
   <version>2.5</version> 
   <scope>provided</scope> 
</dependency> 

很坑爹,開始報錯的時候不知道是什麼原因,以為程式碼有問題,之後才發現是導包的問題,浪費了一早上。