【问题标题】:ClassNotFoundException in Web Application using struts使用 struts 的 Web 应用程序中的 ClassNotFoundException
【发布时间】:2011-02-25 06:55:49
【问题描述】:

我正在使用 Apache Struts 开发一个 Web 应用程序,以部署在 JBoss 服务器上。使用 eclipse 进行开发。

我已将 web.xml 配置为将所有 *.do 请求转发到 ActionServlet。

一个 JSP 页面 (abc.jsp) 有一个带有 action="newgoal.do" 的表单。

struts-config.xml 文件有以下条目:

 <action path="/newgoal" type="com.misys.trng.AddingNewGoalAction">
 </action>

我已经验证类的路径是正确的。

我的 Web 应用程序中的所有其他 .do 转发都运行良好。 当我从 abc.jsp 提交表单时,出现以下异常:

2:13:43,793 ERROR [RequestProcessor] No action instance for path /newgoal could be created
java.lang.ClassNotFoundException: com.misys.trng.AddingNewGoalAction
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at org.apache.struts.util.RequestUtils.applicationClass(RequestUtils.java:117)
at org.apache.struts.util.RequestUtils.applicationInstance(RequestUtils.java:143)
at org.apache.struts.action.RequestProcessor.processActionCreate(RequestProcessor.java:280)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:218)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:235)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:190)
at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:92)
at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.process(SecurityContextEstablishmentValve.java:126)
at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:70)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:330)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:829)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:601)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Unknown Source)

我无法理解错误可能是什么。为什么我的应用程序不能加载 1 个特定类,而其他所有类都工作正常。请帮忙。

【问题讨论】:

  • 该类是否存在于您的 JBoss 安装的 WEB-INF/classes 下?
  • 它没有,但所有其他正在加载/实例化的类也没有任何问题。

标签: exception jakarta-ee struts classnotfoundexception struts-config


【解决方案1】:

该类必须存在于WEB-INF/classes 下或位于WEB-INF/lib 下的.jar 文件中。确保确实如此。

【讨论】:

  • 其他 Action 类都工作正常,但它们不存在于 WEB-INF/classes 中或作为 WEB-INF/lib 中的 jar 的一部分。所以我不明白这怎么可能是问题所在。
  • .java 文件位于文件夹“Java 资源:src”中。 META-INF 文件夹有一个文件夹“MANIFEST.MF”。 WEB-INF/lib 文件夹是空的。而且我的应用程序大部分都运行良好。我在这里错过了什么?
【解决方案2】:

也许你的行为是静态的?我有同样的问题。使用属性中不存在的值初始化了一个静态变量,然后初始化操作 not。

【讨论】:

    猜你喜欢
    • 2020-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-28
    • 1970-01-01
    相关资源
    最近更新 更多