項目部署到Tomcat報這樣的異常:
- jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class
造成這種情況的原因很可能是:
一、項目的WEB-INF/lib下有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下,可以放在工程下的一個專門的目錄(如lib)下面,然后通過Eclipse導入到工程中。
二、針對第二種情況,暫時沒有想到簡單的解決辦法,在我的項目中由於某種特殊的需求,weblogic.jar是通過自定義的類加載器加載的,而不是由Tomcat的 WebappClassLoader加載,所以上述問題也就不存在了。如果您遇到同樣的問題,可以借鑒此種方案。