我在使用struts表单标签时遇到问题,这会返回ClassNotFoundException:

javax.servlet.jsp.JspException: Exception creating bean of class com.myproject.form.GenerationForm: java.lang.ClassNotFoundException: com.myproject.form.GenerationForm
org.apache.struts.taglib.html.FormTag.doStartTag(FormTag.java:568)

具有以下结构:

tomcat
|_____lib
|_____webapps
      |______myApp
             |____WEB_INF

我在Tomcat的lib文件夹中有struts JAR . 我的 class 在webapps WEB_INF文件夹中 .

我知道该类已正确加载,因为使用基本JSP,我可以实例化它并正常使用它 . 只有在尝试由struts使用时才会抛出ClassNotFoundException .

在struts配置文件中,表单bean定义为(struts-config.xml):

<struts-config>
    <form-beans>
        <form-bean name="generation"
            type="com.myproject.form.GenerationForm" />
    </form-beans>
    [...]

    <action-mappings>
        <action path="/generator" type="com.myproject.action.Generator"
        input="/secure/confirm.jsp" name="generation" scope="request">
            <forward name="error" path="/page/error.page" />
            <forward name="close" path="/page/close.page" />
            <forward name="results" path="/results.action?id={0}" redirect="true" />
        </action>
    </action-mappings>

</struts-config>

表单定义为(page.jsp):

<html:form styleId="confirmForm" styleClass="confirm" action="/generator.action" method="POST">
     [...]
</html:form>

为了测试这个问题,我在tomcat的lib文件夹中生成了一个包含我的应用程序类的JAR文件,在这种情况下,Struts框架可以加载类,一切都按预期工作 .

由于类应该由应用程序的类加载器加载,为什么Struts不能“看到”我的webapp类?有没有办法指定它们应该从哪里加载?