專案部署到Tomat報異常:jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending ...

harbor1981發表於2016-03-01

專案部署到Tomcat報這樣的異常:

Java程式碼  收藏程式碼
  1. jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class  

 

原因分析:

造成這種情況的原因很可能是以下兩種情況:

一、專案的WEB-INF/lib下有servlet-api.jar,與Tomcat自帶的servlet-api.jar衝突了。

二、專案的WEB-INF/lib下有包含javax.servlet包的其他JAR包(如WebLogic 8.1的weblogic.jar),造成與Tomcat自帶的servlet-api.jar的衝突。

 

因為Tomcat的WebappClassLoader載入JAR包時會進行校驗,一旦發現上述衝突就會報出上面的異常。

解決方案:

一、針對第一種情況,不要將servlet-api.jar放到WEB-INF/lib下,因為專案部署時根本不需要這個jar包,Tomcat已經提供了。當然如果工程不匯入此jar包,程式碼可能會報錯,你可以通過Eclipse把jar包匯入到工程中即可,打war包時不要包含這個jar包。

二、針對第二種情況,談談我的解決辦法,在我的專案中由於某種特殊的需求,weblogic.jar是通過自定義的類載入器載入的,而不是由Tomcat的WebappClassLoader載入,所以上述問題也就不存在了。如果您遇到同樣的問題,可以借鑑此種方案,只需寫一個最簡單的類載入器即可。

相關文章