NoClassDefFoundError Exception when I use Omnifaces::Ajax::update() method

好久不见. 提交于 2020-01-15 12:29:06

问题


When I try to run the sample code of Omnifaces library about Ajax::update() method, i get the NoClassDefFoundError exception;

I suppose that it concerns about the client-ids or ids of components, but I do not know how to avoid this exception.

The welcome.xhtml page is the following

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core">

    <body>

        <h3>Update a component programmatically</h3>
        <h:form id="form">
            <h:commandButton value="submit" action="#{ajaxBean.update}">
                <f:ajax />
            </h:commandButton>
            <p>
                It's now
                <h:outputText id="timestamp" value="#{now.toString}" />
            </p>
        </h:form>

        <hr />

        <hr />

        <h3>Execute a callback script programmatically</h3>
        <h:form>
            <h:commandButton value="submit" action="#{ajaxBean.callback}">
                <f:ajax />
            </h:commandButton>
        </h:form>

        <hr />

        <h3>Add arguments to the JavaScript scope</h3>
        <h:form>
            <h:commandButton value="submit" onclick="$('#showData').empty()"
                action="#{ajaxBean.argument}">
                <f:ajax />
            </h:commandButton>
        </h:form>
        <ul id="showData"></ul>
        <h:outputScript>
             function showData() {
                 var data = OmniFaces.Ajax.data;
                 var $showData = $("#showData");

                 $.each(data, function(key, value) {
                    $("&lt;li&gt;").text(key + "=" + JSON.stringify(value)).appendTo($showData);
                });
             }
         </h:outputScript>

</body>
</html>

And the AjaxBean.java bean is the following

package com.tutorial;

import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

import javax.faces.component.UIData;

import org.omnifaces.util.Ajax;

public class AjaxBean {

    public void update() {
        Ajax.update("form:timestamp");
    }

    public void callback() {
        Ajax.oncomplete("alert('Hi, I am the oncomplete callback script!')");
    }

    public void argument() {
        Ajax.data("foo", "bar");
        Ajax.data("first", "one", "second", "two");
        Map<String, Object> data = new HashMap<>();
        data.put("bool", true);
        data.put("number", 1.2F);
        data.put("date", new Date());
        data.put("array", new Integer[] { 1, 2, 3, 4, 5 });
        data.put("list", Arrays.asList("one", "two", "three"));
        Ajax.data(data);
        Ajax.oncomplete("showData()");
    }

}

The stacktrace is:

11:02:44,289 SEVERE [javax.enterprise.resource.webcontainer.jsf.application] java.lang.NoClassDefFoundError: org/omnifaces/util/Ajax: javax.faces.el.EvaluationException: java.lang.NoClassDefFoundError: org/omnifaces/util/Ajax
    at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:98) [:2.0.3-]
    at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:98) [:2.0.3-]
    at javax.faces.component.UICommand.broadcast(UICommand.java:311) [:2.0.3-]
    at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:781) [:2.0.3-]
    at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1246) [:2.0.3-]
    at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:77) [:2.0.3-]
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:97) [:2.0.3-]
    at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:114) [:2.0.3-]
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:308) [:2.0.3-]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:324) [:6.1.0.Final]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:242) [:6.1.0.Final]
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [:6.1.0.Final]
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [:6.1.0.Final]
    at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:181) [:6.1.0.Final]
    at org.jboss.modcluster.catalina.CatalinaContext$RequestListenerValve.event(CatalinaContext.java:285) [:1.1.0.Final]
    at org.jboss.modcluster.catalina.CatalinaContext$RequestListenerValve.invoke(CatalinaContext.java:261) [:1.1.0.Final]
    at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:88) [:6.1.0.Final]
    at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:100) [:6.1.0.Final]
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:159) [:6.1.0.Final]
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [:6.1.0.Final]
    at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158) [:6.1.0.Final]
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [:6.1.0.Final]
    at org.jboss.web.tomcat.service.request.ActiveRequestResponseCacheValve.invoke(ActiveRequestResponseCacheValve.java:53) [:6.1.0.Final]
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:362) [:6.1.0.Final]
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [:6.1.0.Final]
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:654) [:6.1.0.Final]
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:951) [:6.1.0.Final]
    at java.lang.Thread.run(Thread.java:744) [:1.7.0_45]
Caused by: java.lang.NoClassDefFoundError: org/omnifaces/util/Ajax
    at com.tutorial.AjaxBean.update(AjaxBean.java:16) [:]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [:1.7.0_45]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) [:1.7.0_45]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [:1.7.0_45]
    at java.lang.reflect.Method.invoke(Method.java:606) [:1.7.0_45]
    at org.apache.el.parser.AstValue.invoke(AstValue.java:196) [:6.1.0.Final]
    at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276) [:6.1.0.Final]
    at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:102) [:2.0.3-]
    at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:84) [:2.0.3-]
    ... 27 more

11:02:44,307 WARNING [javax.enterprise.resource.webcontainer.jsf.lifecycle] #{ajaxBean.update}: java.lang.NoClassDefFoundError: org/omnifaces/util/Ajax: javax.faces.FacesException: #{ajaxBean.update}: java.lang.NoClassDefFoundError: org/omnifaces/util/Ajax
    at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:114) [:2.0.3-]
    at javax.faces.component.UICommand.broadcast(UICommand.java:311) [:2.0.3-]
    at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:781) [:2.0.3-]
    at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1246) [:2.0.3-]
    at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:77) [:2.0.3-]
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:97) [:2.0.3-]
    at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:114) [:2.0.3-]
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:308) [:2.0.3-]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:324) [:6.1.0.Final]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:242) [:6.1.0.Final]
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [:6.1.0.Final]
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [:6.1.0.Final]
    at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:181) [:6.1.0.Final]
    at org.jboss.modcluster.catalina.CatalinaContext$RequestListenerValve.event(CatalinaContext.java:285) [:1.1.0.Final]
    at org.jboss.modcluster.catalina.CatalinaContext$RequestListenerValve.invoke(CatalinaContext.java:261) [:1.1.0.Final]
    at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:88) [:6.1.0.Final]
    at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:100) [:6.1.0.Final]
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:159) [:6.1.0.Final]
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [:6.1.0.Final]
    at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158) [:6.1.0.Final]
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [:6.1.0.Final]
    at org.jboss.web.tomcat.service.request.ActiveRequestResponseCacheValve.invoke(ActiveRequestResponseCacheValve.java:53) [:6.1.0.Final]
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:362) [:6.1.0.Final]
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [:6.1.0.Final]
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:654) [:6.1.0.Final]
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:951) [:6.1.0.Final]
    at java.lang.Thread.run(Thread.java:744) [:1.7.0_45]
Caused by: javax.faces.el.EvaluationException: java.lang.NoClassDefFoundError: org/omnifaces/util/Ajax
    at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:98) [:2.0.3-]
    at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:98) [:2.0.3-]
    ... 26 more
Caused by: java.lang.NoClassDefFoundError: org/omnifaces/util/Ajax
    at com.tutorial.AjaxBean.update(AjaxBean.java:16) [:]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [:1.7.0_45]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) [:1.7.0_45]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [:1.7.0_45]
    at java.lang.reflect.Method.invoke(Method.java:606) [:1.7.0_45]
    at org.apache.el.parser.AstValue.invoke(AstValue.java:196) [:6.1.0.Final]
    at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276) [:6.1.0.Final]
    at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:102) [:2.0.3-]
    at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:84) [:2.0.3-]
    ... 27 more

11:02:44,307 ERROR [STDERR] javax.faces.FacesException: #{ajaxBean.update}: java.lang.NoClassDefFoundError: org/omnifaces/util/Ajax

11:02:44,307 ERROR [STDERR]     at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:85)

11:02:44,307 ERROR [STDERR]     at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:97)

11:02:44,307 ERROR [STDERR]     at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:114)

11:02:44,307 ERROR [STDERR]     at javax.faces.webapp.FacesServlet.service(FacesServlet.java:308)

11:02:44,307 ERROR [STDERR]     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:324)

11:02:44,307 ERROR [STDERR]     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:242)

11:02:44,307 ERROR [STDERR]     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275)

11:02:44,307 ERROR [STDERR]     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161)

11:02:44,307 ERROR [STDERR]     at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:181)

11:02:44,307 ERROR [STDERR]     at org.jboss.modcluster.catalina.CatalinaContext$RequestListenerValve.event(CatalinaContext.java:285)

11:02:44,307 ERROR [STDERR]     at org.jboss.modcluster.catalina.CatalinaContext$RequestListenerValve.invoke(CatalinaContext.java:261)

11:02:44,307 ERROR [STDERR]     at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:88)

11:02:44,307 ERROR [STDERR]     at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:100)

11:02:44,307 ERROR [STDERR]     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:159)

11:02:44,322 ERROR [STDERR]     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)

11:02:44,322 ERROR [STDERR]     at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158)

11:02:44,322 ERROR [STDERR]     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)

11:02:44,322 ERROR [STDERR]     at org.jboss.web.tomcat.service.request.ActiveRequestResponseCacheValve.invoke(ActiveRequestResponseCacheValve.java:53)

11:02:44,322 ERROR [STDERR]     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:362)

11:02:44,322 ERROR [STDERR]     at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877)

11:02:44,322 ERROR [STDERR]     at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:654)

11:02:44,322 ERROR [STDERR]     at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:951)

11:02:44,322 ERROR [STDERR]     at java.lang.Thread.run(Thread.java:744)

11:02:44,322 ERROR [STDERR] Caused by: javax.faces.FacesException: #{ajaxBean.update}: java.lang.NoClassDefFoundError: org/omnifaces/util/Ajax

11:02:44,322 ERROR [STDERR]     at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:114)

11:02:44,322 ERROR [STDERR]     at javax.faces.component.UICommand.broadcast(UICommand.java:311)

11:02:44,322 ERROR [STDERR]     at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:781)

11:02:44,322 ERROR [STDERR]     at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1246)

11:02:44,322 ERROR [STDERR]     at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:77)

11:02:44,322 ERROR [STDERR]     ... 22 more

11:02:44,322 ERROR [STDERR] Caused by: javax.faces.el.EvaluationException: java.lang.NoClassDefFoundError: org/omnifaces/util/Ajax

11:02:44,322 ERROR [STDERR]     at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:98)

11:02:44,322 ERROR [STDERR]     at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:98)

11:02:44,322 ERROR [STDERR]     ... 26 more

11:02:44,322 ERROR [STDERR] Caused by: java.lang.NoClassDefFoundError: org/omnifaces/util/Ajax

11:02:44,322 ERROR [STDERR]     at com.tutorial.AjaxBean.update(AjaxBean.java:16)

11:02:44,322 ERROR [STDERR]     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

11:02:44,322 ERROR [STDERR]     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)

11:02:44,322 ERROR [STDERR]     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

11:02:44,338 ERROR [STDERR]     at java.lang.reflect.Method.invoke(Method.java:606)

11:02:44,338 ERROR [STDERR]     at org.apache.el.parser.AstValue.invoke(AstValue.java:196)

11:02:44,338 ERROR [STDERR]     at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)

11:02:44,338 ERROR [STDERR]     at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:102)

11:02:44,338 ERROR [STDERR]     at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:84)

11:02:44,338 ERROR [STDERR]     ... 27 more

Any help would be appreciated.

Thanks.


回答1:


while not taking a deep look in the code you posted, NoClassDefFound exceptions are usually caused by linking problems and are unrelated to actuall code written. make sure you include in your classpath everything needed




回答2:


If you can, put your project on fresh servlet container installation.



来源:https://stackoverflow.com/questions/26336551/noclassdeffounderror-exception-when-i-use-omnifacesajaxupdate-method

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!