title: Using JSF 2.2.9 on Spring+Tomcat causes java.lang.NoClassDefFoundError: javax/enterprise/context/spi/Contextual
body: <p>I need to use custom html attributes inside JSF components, and for this the only solution that i found is use JSF 2.2, in this way:</p>
  
  <pre><code>&lt;f:passThroughAttribute name="data-toggle" value="modal" /&gt;
  </code></pre>
  
  <p>The problem is that i'm using Spring + Tomcat and i can't change this because i don't have time. Every time that i start my server i got the following error :</p>
  
  <pre><code>Informações: CDI @ViewScoped manager unavailable
  java.lang.NoClassDefFoundError: javax/enterprise/context/spi/Contextual
  </code></pre>
  
  <p>I know this happens because i don't use CDI, but as i said i can't change from Spring to CDI because of time. </p>
  
  <p>How can i solve this problem ? I must use JSF 2.2 (Because custom html attributes) and Spring.</p>
  
  <p><strong>SOLVED:</strong></p>
  
  <p>This problem as solved, i downgrade to JSF 2.2.6 and error stops.</p>
  
  <p><strong>Stack trace:</strong></p>
  
  <pre><code>Fev 01, 2015 4:13:57 PM com.sun.faces.application.view.ViewScopeManager &lt;init&gt;
  Informações: CDI @ViewScoped manager unavailable
  java.lang.NoClassDefFoundError: javax/enterprise/context/spi/Contextual
  at com.sun.faces.application.view.ViewScopeManager.&lt;init&gt;(Unknown Source)
  at com.sun.faces.application.view.ViewScopeManager.getInstance(Unknown Source)
  at com.sun.faces.application.view.ViewScopeEventListener.processEvent(Unknown Source)
  at javax.faces.event.SystemEvent.processListener(Unknown Source)
  at javax.faces.event.ComponentSystemEvent.processListener(Unknown Source)
  at com.sun.faces.application.ApplicationImpl.processListeners(Unknown Source)
  at com.sun.faces.application.ApplicationImpl.invokeListenersFor(Unknown Source)
  at com.sun.faces.application.ApplicationImpl.publishEvent(Unknown Source)
  at javax.faces.component.UIViewRoot.getViewMap(Unknown Source)
  at javax.faces.component.UIViewRoot.getViewMap(Unknown Source)
  at com.sun.faces.mgbean.BeanManager$ScopeManager$ViewScopeHandler.handle(Unknown Source)
  at com.sun.faces.mgbean.BeanManager$ScopeManager.pushToScope(Unknown Source)
  at com.sun.faces.mgbean.BeanManager.createAndPush(Unknown Source)
  at com.sun.faces.mgbean.BeanManager.create(Unknown Source)
  at com.sun.faces.el.ManagedBeanELResolver.resolveBean(Unknown Source)
  at com.sun.faces.el.ManagedBeanELResolver.getValue(Unknown Source)
  at com.sun.faces.el.DemuxCompositeELResolver._getValue(Unknown Source)
  at com.sun.faces.el.DemuxCompositeELResolver.getValue(Unknown Source)
  at org.apache.el.parser.AstIdentifier.getValue(AstIdentifier.java:71)
  at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:189)
  at com.sun.faces.facelets.el.TagValueExpression.getValue(Unknown Source)
  at javax.faces.component.UIComponentBase$AttributesMap.get(Unknown Source)
  at com.sun.faces.el.CompositeComponentAttributesELResolver$ExpressionEvalMap.get(Unknown Source)
  at javax.el.MapELResolver.getValue(MapELResolver.java:52)
  at com.sun.faces.el.DemuxCompositeELResolver._getValue(Unknown Source)
  at com.sun.faces.el.DemuxCompositeELResolver.getValue(Unknown Source)
  at org.apache.el.parser.AstValue.getValue(AstValue.java:169)
  at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:189)
  at com.sun.faces.facelets.el.ContextualCompositeValueExpression.getValue(Unknown Source)
  at com.sun.faces.facelets.el.TagValueExpression.getValue(Unknown Source)
  at com.sun.faces.application.ApplicationImpl.createComponentApplyAnnotations(Unknown Source)
  at com.sun.faces.application.ApplicationImpl.createComponent(Unknown Source)
  at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.createComponent(Unknown Source)
  at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(Unknown Source)
  at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(Unknown Source)
  at javax.faces.view.facelets.CompositeFaceletHandler.apply(Unknown Source)
  at com.sun.faces.facelets.tag.composite.ImplementationHandler.apply(Unknown Source)
  at javax.faces.view.facelets.CompositeFaceletHandler.apply(Unknown Source)
  at com.sun.faces.facelets.compiler.NamespaceHandler.apply(Unknown Source)
  at com.sun.faces.facelets.compiler.EncodingHandler.apply(Unknown Source)
  at com.sun.faces.facelets.impl.DefaultFacelet.include(Unknown Source)
  at com.sun.faces.facelets.impl.DefaultFacelet.include(Unknown Source)
  at com.sun.faces.facelets.impl.DefaultFaceletContext.includeFacelet(Unknown Source)
  at com.sun.faces.facelets.tag.jsf.CompositeComponentTagHandler.applyCompositeComponent(Unknown Source)
  at com.sun.faces.facelets.tag.jsf.CompositeComponentTagHandler.applyNextHandler(Unknown Source)
  at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(Unknown Source)
  at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(Unknown Source)
  at javax.faces.view.facelets.CompositeFaceletHandler.apply(Unknown Source)
  at javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(Unknown Source)
  at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(Unknown Source)
  at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(Unknown Source)
  at com.sun.faces.facelets.tag.ui.DefineHandler.applyDefinition(Unknown Source)
  at com.sun.faces.facelets.tag.ui.CompositionHandler.apply(Unknown Source)
  at com.sun.faces.facelets.impl.DefaultFaceletContext$TemplateManager.apply(Unknown Source)
  at com.sun.faces.facelets.impl.DefaultFaceletContext.includeDefinition(Unknown Source)
  at com.sun.faces.facelets.tag.ui.InsertHandler.apply(Unknown Source)
  at javax.faces.view.facelets.CompositeFaceletHandler.apply(Unknown Source)
  at com.sun.faces.facelets.compiler.NamespaceHandler.apply(Unknown Source)
  at com.sun.faces.facelets.compiler.EncodingHandler.apply(Unknown Source)
  at com.sun.faces.facelets.impl.DefaultFacelet.include(Unknown Source)
  at com.sun.faces.facelets.impl.DefaultFacelet.include(Unknown Source)
  at com.sun.faces.facelets.impl.DefaultFacelet.include(Unknown Source)
  at com.sun.faces.facelets.impl.DefaultFaceletContext.includeFacelet(Unknown Source)
  at com.sun.faces.facelets.tag.ui.CompositionHandler.apply(Unknown Source)
  at com.sun.faces.facelets.compiler.NamespaceHandler.apply(Unknown Source)
  at com.sun.faces.facelets.compiler.EncodingHandler.apply(Unknown Source)
  at com.sun.faces.facelets.impl.DefaultFacelet.apply(Unknown Source)
  at com.sun.faces.application.view.FaceletViewHandlingStrategy.buildView(Unknown Source)
  at com.sun.faces.lifecycle.RenderResponsePhase.execute(Unknown Source)
  at com.sun.faces.lifecycle.Phase.doPhase(Unknown Source)
  at com.sun.faces.lifecycle.LifecycleImpl.render(Unknown Source)
  at javax.faces.webapp.FacesServlet.service(Unknown Source)
  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
  at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:72)
  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
  at br.com.jwebbuild.filter.LoginFilter.doFilter(LoginFilter.java:73)
  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
  at org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter.doFilterInternal(OpenEntityManagerInViewFilter.java:113)
  at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
  at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
  at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164)
  at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462)
  at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
  at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
  at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:562)
  at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
  at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:395)
  at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:250)
  at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:188)
  at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:302)
  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
  at java.lang.Thread.run(Thread.java:744)
  Caused by: java.lang.ClassNotFoundException: javax.enterprise.context.spi.Contextual
  at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1676)
  at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1521)
  ... 98 more
  </code></pre>