2012-01-20 162 views
2

我有一個應用程序使用j_security進行基於表單的身份驗證。當應用程序第一次部署時(或者tomcat重新啓動時),用戶在嘗試直接訪問受保護的內容時(無需登錄)會得到此異常。Tomcat 7 - java.lang.NoClassDefFoundError:無法初始化類javax.servlet.http.Cookie

GRAVE: Servlet.service() for servlet [default] in context with path [/mycontext] threw exception [Could not initialize class javax.servlet.http.Cookie] with root cause 
    java.lang.NoClassDefFoundError: Could not initialize class javax.servlet.http.Cookie 
    at org.apache.catalina.core.ApplicationSessionCookieConfig.createSessionCookie(ApplicationSessionCookieConfig.java:127) 
    at org.apache.catalina.connector.Request.doGetSession(Request.java:2875) 
    at org.apache.catalina.connector.Request.getSession(Request.java:2307) 
    at org.apache.catalina.connector.RequestFacade$GetSessionPrivilegedAction.run(RequestFacade.java:216) 
    at org.apache.catalina.connector.RequestFacade$GetSessionPrivilegedAction.run(RequestFacade.java:205) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at org.apache.catalina.connector.RequestFacade.getSession(RequestFacade.java:894) 
    at org.apache.catalina.connector.RequestFacade.getSession(RequestFacade.java:909) 
    at javax.servlet.http.HttpServletRequestWrapper.getSession(HttpServletRequestWrapper.java:238) 
    at com.mycompany.myfilter.SaasComponentImpl.getTenantId(SaasComponentImpl.java:284) 

例外的行爲是將用戶重定向到登錄表單,並當用戶登錄重定向他所要求保護的資源。

但奇怪的是,如果第一個請求發送到重新啓動的服務器要求登錄表單,這可以正常工作!看來,這個tomcat之後,找到並正確加載cookie類,然後按預期處理所有請求。

爲什麼tomcat無法在lib/servlet-api.jar中找到肯定存在的Cookie類?恕我直言,沒有mmetter當這個類被要求加載第一次......它應該在那裏的任何閥門,servlet,過濾器等......我是對的?

PS:這是工作的罰款的應用程序是從Tomcat 6

回答

-1

遷移確保你沒有在你的應用程序的WEB-INF/lib中的servlet-api.jar文件之前。

如果你有,它將被兩個不同的類加載器加載,並可能導致奇怪的錯誤消息,如你有。

除此之外,嘗試在全新安裝的tomcat中運行您的應用程序。

+0

爲什麼downvote?即使現在我確信這是需要照顧的。 –

相關問題