最近需要做一个web方面的文件上传的Demo.开发工具是eclipse[具体名称:Eclipse IDE for Java EE Developers 版本:2.0.0.20130613-0530].使用struts2[struts2-core-2.3.15.1.jar].
[错误1]
[console提示]org.apache.struts2.dispatcher.Dispatcher error
SEVERE: Dispatcher initialization failed
Unable to load configuration. - action - file:******/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/******/WEB-INF/classes/struts.xml:**:**
[原因]struts.xml文件中<action>的class属性配置错误,对应的action的处理类错误。
[错误的解决办法]修改工程中的struts.xml.这种方法有时候有效,但有时候不起作用,几乎能把人搞疯掉(对debugging中的coder最痛苦的事情,就是这种“不可再现”的错误!)。产生这种错误的原因是由于eclipse的在进行web开发时的机制导致的。用eclipse进行web开发时,你所编辑的工程中文件并不是调试或运行时的文件。在调试或运行时的文件,eclipse用的是路径“eclipse的workspace的目录/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/工程名”下面的文件!struts.xml文件在该目录的“WEB-INF/classes/struts.xml”路径下!即eclipse的修改的同步机制是一个不确定因素!
[正确的解决办法]
1.直接编辑eclipse调试或运行时所用的文件,即web工程发布所用的文件。[这种办法比较可靠,但是笨拙]。
2.改进eclipse的web开发的修改与发布的文件同步策略。在这里,具体就是如何使eclipse的struts.xml修改后生效的机制可控(rebuild工程?重启tomcat?或是重启eclipse? 我测试过这几种做法,好像都没有确定性,即有时候可以有时候不可以[coder最讨厌的东东]).我在网上找了好久都没找到比较好的解决方案。