Tomcat 7-java.lang.NoClassDefFoundError:无法初始化类javax.servlet.http.Cookie

Tomcat 7-java.lang.NoClassDefFoundError:无法初始化类javax.servlet.http.Cookie,tomcat,tomcat7,Tomcat,Tomcat7,我有一个应用程序使用j_安全性进行基于表单的身份验证。首次部署应用程序(或重新启动tomcat)时,用户在尝试直接访问受保护内容(无需登录)时会出现此异常 例外的行为是将用户重定向到登录表单,当用户登录时,将用户重定向到请求的受保护资源 但奇怪的是,如果发送到重新启动的服务器的第一个请求请求登录表单,那么它就可以正常工作!!!看起来在tomcat找到并正确加载cookie类之后,所有请求都会按预期处理 为什么tomcat在lib/servlet-api.jar中找不到确定的Cookie类?IMH

我有一个应用程序使用j_安全性进行基于表单的身份验证。首次部署应用程序(或重新启动tomcat)时,用户在尝试直接访问受保护内容(无需登录)时会出现此异常

例外的行为是将用户重定向到登录表单,当用户登录时,将用户重定向到请求的受保护资源

但奇怪的是,如果发送到重新启动的服务器的第一个请求请求登录表单,那么它就可以正常工作!!!看起来在tomcat找到并正确加载cookie类之后,所有请求都会按预期处理

为什么tomcat在lib/servlet-api.jar中找不到确定的Cookie类?IMHO,当这个类第一次被要求加载时没有提示。。。它应该存在于任何阀门、servlet、过滤器等。。。我是对的


PS:在应用程序从tomcat 6迁移之前,这一切都很正常。

确保应用程序的WEB-INF/lib中没有servlet-api.jar

如果有,它将由两个不同的类加载器加载,并且可能会导致奇怪的错误消息,就像您的错误消息一样


除此之外,尝试在新安装的tomcat中运行应用程序。

确保应用程序的WEB-INF/lib中没有servlet-api.jar

如果有,它将由两个不同的类加载器加载,并且可能会导致奇怪的错误消息,就像您的错误消息一样

除此之外,尝试在新安装的tomcat中运行应用程序

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)