近来习惯用Eclipse手工创建Struts工程,以加深对Struts框架的认识。没想到上来就给我来个诡异的异常:
SEVERE: Error creating form bean of class test0001.struts1.form.InputForm
java.lang.NullPointerException
at org.apache.struts.config.FormBeanConfig.createActionForm(FormBeanConfig.java:212)
at org.apache.struts.util.RequestUtils.createActionForm(RequestUtils.java:292)
at org.apache.struts.util.RequestUtils.createActionForm(RequestUtils.java:191)
...
[文件目录结构]
Action类和Form类正常编译通过,struts-config.xml、web.xml检查一番,也没发现什么写错的地方。
实在没辙,只好祭出“百度”神器。遭遇同样异常的童鞋果然不少,但原因似乎与我的不同。
■原因之一:Form类没有继承ActionForm类。
参照:http://fengshujuan.iteye.com/blog/440982
■原因之二:formbean的最后多打了个空格
例:<form-bean name= "xxxForm " type= "com.xxx.xxx.form.XXXForm " />
■原因之三:Project下拉菜单里边没有把"Build Automatically"勾上,导致class类文件未自动生成。
汗啊,程序猿真是项苦逼的工作啊,稍微错一点都不行,一失足成千古恨。好吧,重新对照这些原因进行批评和自我批评,
深挖自己程序出错的思想根源。但是,不知是喜还是忧,这些错误都没有出现在我的程序里。
重新看异常信息,里边提示有“java.lang.NullPointerException”,也就是没有得到Form类的实例咯,
这使我比较倾向于Form类没有生成好,但是检查Test0001/WebContent/classes目录确实有生成好的Form类class文件。
我再打开一个以前可以正常运行的struts项目,一对比目录结构就明白了,问题就出在classes的生成路径,因为是
手工创建的struts工程,一不小心把该目录设错了,正确的路径应该是Test0001/WebContent/WEB-INF/classes。
struts框架是很死板的,他要找class文件都是在WEB-INF/classes目录下找,找不到就报错。把路径改改,程序果然
可以正常跑了。
[正确的classes文件夹路径设定]
希望此文章能帮到遭遇同样异常的朋友。