내 웹 응용 프로그램은 tomcat 7, myfaces, primefaces를 실행합니다.Tomcat 7에서 내 클래스를 찾을 수 없습니다. javax.el.ELException : java.lang.NoClassDefFoundError
내 컴퓨터에서 정확한 코드와 라이브러리가 두 시스템에 모두로드되어 있어도 개발 환경에서 복제 할 수 없다는 문제가 있습니다. 유일한 차이점은 DEV는 tomcat7.0.35 및 자극 내가 이런 일이 왜 확실하지 않다
javax.servlet.ServletException: javax.el.ELException: java.lang.NoClassDefFoundError: Could not initialize class com.myapps.util.UIStringUtil
javax.faces.webapp.FacesServlet.service(FacesServlet.java:229)
com.myapps.util.LoginFilter.doFilter(LoginFilter.java:56) **root cause** java.lang.NoClassDefFoundError: Could not initialize class com.myapps.util.UIStringUtil
com.myapps.bean.UserAuthBean.login(UserAuthBean.java:106)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
org.apache.el.parser.AstValue.invoke(AstValue.java:278)
org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:274)
org.apache.myfaces.view.facelets.el.ContextAwareTagMethodExpression.invoke(ContextAwareTagMethodExpression.java:96)
org.apache.myfaces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:68)
javax.faces.component.UICommand.broadcast(UICommand.java:120)
javax.faces.component.UIViewRoot._broadcastAll(UIViewRoot.java:1028)
javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:286)
javax.faces.component.UIViewRoot._process(UIViewRoot.java:1375)
javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:752)
org.apache.myfaces.lifecycle.InvokeApplicationExecutor.execute(InvokeApplicationExecutor.java:38)
org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:170)
org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:197)
com.myapps.util.LoginFilter.doFilter(LoginFilter.java:56)
tomcat7.0.40 있음, 톰캣 전복이다. 왜 이것이 javax.el.Elexception으로 던져 졌는지 궁금합니다. 자바 빈 코드에서 던져진 곳이 어디입니까? 이런 일이 코드의 정확한 라인은 (UserAuthBean.java:106)
context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO,
UIStringUtil.getUIString("msgKey"),
UIStringUtil.getUIString("msgKey")));
UIStringUtil 클래스 리소스 번들에서 데이터를 읽는 데 도움 정적 변수 및 방법이있다.
앞에서 언급했듯이 이는 제작 상자에서만 발생하며 개발 상자에서 재현 할 수 없습니다.
여기에 도움을주세요.
어째서 궁금한 응용 프로그램과 라이브러리를 배포하고 있습니까? 내 거미 감각은 클래스 로더 충돌이 여기에 있지만, 기계에 접근하지 않고도 항상 직감을 유지할 수 있다고 말합니다. – Gimby
해결책을 찾아 냈지만 문제가 왜 처음인지 알 수 없습니다. UIStringUtil 클래스에서 private static ResourceBundle을 대체했습니다. appmsgbundle = FacesContext.getCurrentInstance(). getApplication(). getResourceBundle (FacesContext.getCurrentInstance(), "appmessages"); 개인 정적 ResourceBundle 사용 appmsgbundle = ResourceBundle.getBundle ("com.myapps.util.appmessages"); 그리고 그 문제가 해결되었습니다. 어떤 이유로 FacexContext 초기화에 문제가있는 것 같습니다. 그러나 이유를 모릅니다. –