最近暂无项目,于是想学习下Struts2。公司开发用普元的EOS,平时很少接触这些SSH框架。
考虑到多学些东西多积累写技术对公司没有什么坏处,经理并没有反对,只是告诉我们不要
耽误工作。
    下载了最新的struts2.1.6,解压,按照reference写helloword.配置文件与reference中的
几乎一字不差。可以一运行就爆出警告:
警告: No configuration found for the specified action: 'HelloWorld' in namespace: ''. Form action defaulting to 'action' attribute's literal value.
2009-2-24 13:24:02 com.opensymphony.xwork2.util.logging.commons.CommonsLogger warn
警告: No configuration found for the specified action: 'HelloWorld' in namespace: ''. Form action defaulting to 'action' attribute's literal value.
    提交之后肯定报错说是找不到Action.之后就开始疯狂的Google以排除错误。折腾了2个小时排除了配置文件语法错误、
java语法错误、form表单的action以.action作为后缀、没有添加commons-io-1.3.2.jar和commons-fileupload-1.2.1.jar两个必须jar包等、jar包文件损坏等可能。问题依旧。
    一番折腾之后几近崩溃,这时候我又看了下启动日志发现有一下两条输出:
信息: Parsing configuration file [struts-default.xml]
2009-2-24 13:23:37 com.opensymphony.xwork2.util.logging.commons.CommonsLogger info
信息: Unable to locate configuration files of the name struts-plugin.xml, skipping
2009-2-24 13:23:37 com.opensymphony.xwork2.util.logging.commons.CommonsLogger info

怀疑是缺少jar包,把struts2-all lib 中的20多个jar包全复制过去,问题更严重了,启动都起不起来了。
     最后把我的虚拟目录去掉,运行struts2-all/app中的struts2-blank-2.1.6.war,虽然也报了那两条Unable的警告
但程序能够正常运行。看来Jar文件是没有问题的,那两条警告也不影响使用。无奈之下,只能跟人家的配置文件一一
比对,确定没有问题。实在找不出是哪出了问题,郁闷到了极点,打算就此打住,有时间再说。
     正当打算关闭窗口,关机的时候,发现有点不对,人家的Web-Inf/目录下面只有一个web.xml文件,而我的
有三个:web.xml、struts.xml、HelloWorld.xml。再仔细看人家把那两个放到了Web-inf/classes/目录下了。
当时感觉自己可笑又可气,折腾了半天是这出了问题。以前写过两个struts1.2的小程序,记得当时的配置文件
struts-config.xml就是放到web-inf/目录下了,因此我就没多想直接将文件放那了,谁承想人家把规则该了。
     最后可能可以总结出三个教训:
     1.做事情一定要细心,不要以为清车熟路就大意
     2.排除错误从简单到复杂,不要一出问题就google,在没有把产生问题的原因理清之前,网上找到的那些解决
       方案和建议很可能把你搞的更晕
     3.如果你是某个框架的设置者,不算随便更改规则。

    书写此文作为这件事情的教训总结,也希望各位新学Struts2的诸君能够作为前车之鉴,不要象我一样为这么点
小事情而耽误那么多宝贵时间

解决方案 »

  1.   

    这个不是基础错误 我也犯过(TNND 我看那本书上居然没有任何关于XML放置位置的提示。。)不过 你的位置放错应该不会出现错误信息啊 你那个应该是别的错误信息波?
      

  2.   

    这个我还不清楚,初步的判断可能是我没把相应的jar文件添加全,我的lib中只有9个jar包
    与stucts2有关的就只有一个struts2-core-2.1.6.jar和xwork-2.1.2.jar。其他的从名称上看
    该是一些辅助包和测试包,没有关于struts2的plugin的包。如果那位知道产生那几条信息:
    Unable to locate configuration files of the name struts-plugin.xml, skipping 
    产生的原因,请不吝赐教。ps:
    lib中的jar包如下:
    commons-fileupload-1.2.1.jar
    commons-io-1.3.2.jar
    commons-logging-1.1.jar
    freeer-2.3.13.jar
    junit-3.8.1.jar
    ognl-2.6.11.jar
    spring-test-2.5.6.jar
    struts2-core-2.1.6.jar
    xwork-2.1.2.jar
    jstl.jar
    standard.jar
      

  3.   

    你所说的出错的那个XML我曾经也出过错(为此我还特别把包含那个XML的JAR包拆开看看里面到底放了什么) 但是不知道为哈 后来莫名其妙的就好了...有些错误的原因是因为我们在STRUTS.XML里写配置信息的时候 STRUTS2.1系列不支持有些原来的STRUTS2.1的配置信息
      

  4.   

       只需要5个jar包就OK,确实是因为struts.xml的位置放错的原因