我在使用struts表单标记时遇到问题,这会返回ClassNotFoundException:
id
具有以下结构:
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文件夹中有struts JAR。我的班级在webapps WEB_INF文件夹中。
我知道该类已正确加载,因为使用基本JSP,我可以实例化它并正常使用它。只有在尝试由struts使用时才会抛出ClassNotFoundException。
在struts配置文件中,表单bean定义为(struts-config.xml):
tomcat
|_____lib
|_____webapps
|______myApp
|____WEB_INF
表单定义为(page.jsp):
<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>
为了测试这个问题,我在tomcat的lib文件夹中生成了一个包含我的应用程序类的JAR文件,在这种情况下,Struts框架可以加载类,一切都按预期工作。
由于类应该由应用程序的类加载器加载,为什么Struts不能“看到”我的webapp类?有没有办法指定它们应该从哪里加载?