简体   繁体   English

在Spring + Tomcat上使用JSF 2.2.9导致java.lang.NoClassDefFoundError:javax / enterprise / context / spi / Contextual

[英]Using JSF 2.2.9 on Spring+Tomcat causes java.lang.NoClassDefFoundError: javax/enterprise/context/spi/Contextual

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: 我需要在JSF组件中使用自定义html属性,为此我发现的唯一解决方案是使用JSF 2.2,这样:

<f:passThroughAttribute name="data-toggle" value="modal" />

The problem is that i'm using Spring + Tomcat and i can't change this because i don't have time. 问题是我正在使用Spring + Tomcat而我无法改变这个因为我没有时间。 Every time that i start my server i got the following error : 每次我启动我的服务器时都会出现以下错误:

Informações: CDI @ViewScoped manager unavailable
java.lang.NoClassDefFoundError: javax/enterprise/context/spi/Contextual

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. 我知道这是因为我不使用CDI,但正如我所说,由于时间的原因,我无法从Spring改为CDI。

How can i solve this problem ? 我怎么解决这个问题 ? I must use JSF 2.2 (Because custom html attributes) and Spring. 我必须使用JSF 2.2(因为自定义html属性)和Spring。

SOLVED: 解决了:

This problem as solved, i downgrade to JSF 2.2.6 and error stops. 这个问题解决了,我降级到JSF 2.2.6并且错误停止了。

Stack trace: 堆栈跟踪:

Fev 01, 2015 4:13:57 PM com.sun.faces.application.view.ViewScopeManager <init>
Informações: CDI @ViewScoped manager unavailable
java.lang.NoClassDefFoundError: javax/enterprise/context/spi/Contextual
at com.sun.faces.application.view.ViewScopeManager.<init>(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

I have same problem and found your question on google (i use JSF 2.2.9), with the answer from hwellmann, i added these depency on pom.xml of my maven project: 我有同样的问题,并在谷歌(我使用JSF 2.2.9)上发现你的问题,从hwellmann的答案,我在我的maven项目的pom.xml上添加了这些依赖:

<dependency>
    <groupId>javax.enterprise</groupId>
    <artifactId>cdi-api</artifactId>
    <version>1.2</version>
</dependency>

and problem solved, thanks! 问题解决了,谢谢!

Did you include the cdi-api.jar in your setup? 你在设置中包含了cdi-api.jar吗?

That doesn't mean you have to use CDI in your application, but the API classes have to be there to satisfy the dependencies of JSF. 这并不意味着你必须在你的应用程序中使用 CDI,但API类必须在那里满足JSF的依赖性。

Probably you are using the @ViewScoped from javax.faces.bean , it was added in JSF 2.0. 可能你正在使用javax.faces.bean@ViewScoped ,它是在JSF 2.0中添加的。 Try using the annotation from javax.faces.view , added in JSF 2.2. 尝试使用JSF 2.2中添加的javax.faces.view的注释。

use JSF 2.2.8 or change tomcat to Apache TomEE, or configure CDI+JSF-Tomcat. 使用JSF 2.2.8或将tomcat更改为Apache TomEE,或配置CDI + JSF-Tomcat。 Best solution using jsf older versions because in the new versions will dependency from CDI 使用jsf旧版本的最佳解决方案,因为在新版本中将依赖于CDI

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 JSF 2.2流和Tomcat 7 java.lang.NoClassDefFoundError:javax / enterprise / context / spi / Context - JSF 2.2 Flows and Tomcat 7 java.lang.NoClassDefFoundError: javax/enterprise/context/spi/Context 在JBoss 7.1.1上部署JSF 2,Spring 3.1应用程序时出错&gt; java.lang.NoClassDefFoundError:javax / servlet / ServletOutputStream - Error deploying JSF 2, Spring 3.1 app on JBoss 7.1.1 > java.lang.NoClassDefFoundError: javax/servlet/ServletOutputStream Java Spring MVC - java.lang.NoClassDefFoundError:javax / servlet / ServletContext - Java Spring MVC - java.lang.NoClassDefFoundError: javax/servlet/ServletContext 弹簧 java.lang.NoClassDefFoundError: org/springframework/context/ApplicationContext - SPRING java.lang.NoClassDefFoundError: org/springframework/context/ApplicationContext 线程“ContainerBackgroundProcessor[StandardEngine[Tomcat]]”中的异常 java.lang.NoClassDefFoundError: ch/qos/logback/classic/spi/ThrowableProxy - Exception in thread “ContainerBackgroundProcessor[StandardEngine[Tomcat]]” java.lang.NoClassDefFoundError: ch/qos/logback/classic/spi/ThrowableProxy java.lang.NoClassDefFoundError:javax / persistence / SharedCacheMode - java.lang.NoClassDefFoundError: javax/persistence/SharedCacheMode java.lang.NoClassDefFoundError: javax/persistence/TableGenerators - java.lang.NoClassDefFoundError: javax/persistence/TableGenerators java.lang.NoClassDefFoundError:org / hibernate / cache / spi / RegionFactory - 从spring 3升级到spring 4 - java.lang.NoClassDefFoundError: org/hibernate/cache/spi/RegionFactory - When upgrading from spring 3 to spring 4 春季java.lang.NoClassDefFoundError - Spring java.lang.NoClassDefFoundError HTTP状态404-使用Spring + Tomcat - HTTP Status 404 - Using Spring+Tomcat
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM