問題描述:本人的項目是用Maven管理,而且用到了servlet3.0的技術,但是項目中用到servlet3.0的地方,總提示找不到類中的方法。很奇怪,在網上找到好多解決辦法,綜合一下終於解決了。現將經驗分享給大家。
前提:我在pom.xml中配置了servlet-api 3.0,配置如下:
<dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.0.1</version> </dependency>
結果:在項目中用到servlet3.0的地方報錯,提示沒有可用的方法
右鍵點擊工程properties -> Java Build Path -> Libraries -> Maven Dependencies。如下圖所示:
上圖中顯示的是servlet2.3而不是3.0。
解決方法:
網上都說servlet-api沖突是因為項目部署的時候WEB-INFO/lib下面的servlet-api和servlet中的servlet-api產生沖突,其實我的不然。因為我的項目是用maven管理的,在pom.xml中配置包依賴的時候配置了commons-logging包的依賴,而commons-logging包又依賴於servlet-api2.3,因此我認為servlet-api2.3把3.0版本給沖掉了。解決辦法如下:
如果上述方法不好使,那么可以在pom.xml配置文件中把servlet3.0的配置代碼拿commons-logging之前,如:
不一定是commons-logging包,最安全的方法是放在最前面。