"index.jsp" does not match your servlet filter pattern. Therefore, the request didn't get routed to the FacesServlet and the container attempted to compile index.jsp and execute it as a plain old JSP. However, since the index.jsp resource referenced JSF resources, it needed a FacesContext.
It's important to understand the difference between URLs and resources. I'm using Facelets, so my View definition resources have names suffixed with ".xhtml".
Because of the filters I have set in web.xml, a "mypage.jsf" URL will be routed to the FacesServlet, which has been primed to locate resources by ripping the ".jsf" off the URL and replacing it with ".xhtml". So the "mypage.xhtml" resource will be used by the FacesServlet to render the view requested by "myfaces.jsf".
An IDE is no substitute for an Intelligent Developer.