gpt4 book ai didi

java - Tomcat 7 找不到我的类抛出 javax.el.E​​LException : java. lang.NoClassDefFoundError

转载 作者:行者123 更新时间:2023-12-01 13:43:09 25 4
gpt4 key购买 nike

我的网络应用程序运行 tomcat 7、myfaces、primefaces。

我的生产 m/c 上有一个问题,即使两台机器上都加载了确切的代码和库,我也无法在开发环境中复制。唯一的区别是tomcat颠覆,dev有tomcat7.0.35,prod有tomcat7.0.40

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)

我不确定为什么会发生这种情况。我很好奇为什么这会被作为 javax.el.E​​lexception 抛出,这是从 java bean 代码中抛出的。发生这种情况的确切代码行是 (UserAuthBean.java:106)

context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, 
UIStringUtil.getUIString("msgKey"),
UIStringUtil.getUIString("msgKey")));

UIStringUtil 类具有静态变量和方法,可帮助从资源包读取数据。

正如我之前提到的,这仅发生在生产盒上,我们无法在开发盒上重现它。

请在此处提供一些帮助。

最佳答案

它作为 ELException 抛出,因为它发生在执行某些 EL 表达式期间。

您应该查看异常的根本原因以了解异常的根本原因。进一步查看堆栈跟踪以找到根本原因。第一个已经存在于您发布的不完整的堆栈跟踪中:

java.lang.NoClassDefFoundError: Could not initialize class com.myapps.util.UIStringUtil

这基本上意味着 Java 在幕后完成类的加载,如下

Class.forName("com.myapps.util.UIStringUtil");

因异常而失败。如果您绝对肯定该类存在于运行时类路径中,那么这只意味着该类的任何静态变量或初始值设定项 block 已引发异常。加载类即初始化所有静态变量并执行所有静态初始化 block ( haven't you ever wondered how those JDBC drivers work? )。

该异常应该反过来作为堆栈跟踪中最底层的根本原因可见,位于 java.lang.NoClassDefFoundError 原因之后。也许是一个相当不言自明的java.lang.NullPointerException

关于java - Tomcat 7 找不到我的类抛出 javax.el.E​​LException : java. lang.NoClassDefFoundError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20536906/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com