第一个HelloWorld的Struts2程序出错了。请大家看一下是什么问题。感谢。感谢。:(

程序在部署后,在TOMCAT里看到的错误是(localhost.2008-12-14.log):



2008-12-14 19:19:40 org.apache.catalina.core.StandardContext filterStart

严重: Exception starting filter struts2

Unable to load bean: type: class:com.opensymphony.xwork2.ObjectFactory - bean - jar:file:/D:/Java/tomcat6016/webapps/struts2hello/WEB-INF/lib/struts2-core-2.0.14.jar!/struts-default.xml:30:72

at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.register(XmlConfigurationProvider.java:208)

at org.apache.struts2.config.StrutsXmlConfigurationProvider.register(StrutsXmlConfigurationProvider.java:101)

at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reload(DefaultConfiguration.java:131)

at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:52)

at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:395)

at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:452)

at org.apache.struts2.dispatcher.FilterDispatcher.init(FilterDispatcher.java:205)

at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:275)

at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:397)

at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:108)

at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3709)

at org.apache.catalina.core.StandardContext.start(StandardContext.java:4356)

at org.apache.catalina.manager.ManagerServlet.start(ManagerServlet.java:1244)

at org.apache.catalina.manager.HTMLManagerServlet.start(HTMLManagerServlet.java:604)

at org.apache.catalina.manager.HTMLManagerServlet.doGet(HTMLManagerServlet.java:129)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)

at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:525)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)

at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:856)

at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:565)

at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1509)

at java.lang.Thread.run(Unknown Source)

Caused by: Bean type class com.opensymphony.xwork2.ObjectFactory with the name xwork has already been loaded by bean - jar:file:/D:/Java/tomcat6016/lib/struts2-core-2.0.14.jar!/struts-default.xml:30:72 - bean - jar:file:/D:/Java/tomcat6016/webapps/struts2hello/WEB-INF/lib/struts2-core-2.0.14.jar!/struts-default.xml:30:72

at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.register(XmlConfigurationProvider.java:193)

... 29 more











以下是程序代码:

struts2.xml:





"http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>

<package name="default" extends="struts-default">




<action name="HelloWorld" class="example.HelloWorld">

<result name="success">/HelloWorld.jsp</result>

</action>

</package>

</struts>









HelloWorld.jsp:



<%@ page contentType="text/html; charset=GBK"%>

<%@ taglib prefix="s" uri="/struts-tags"%>

<html>

<head>

<title>Struts 2 示例</title>

</head>

<body>



<s:property value="message">



${message}

</body>

</html>











HelloWorld.java:



package example;



import com.opensymphony.xwork2.ActionSupport;



public class HelloWorld extends ActionSupport {

public String execute() throws Exception {

setMessage("你好!Struts 2!");

return SUCCESS;

}



private String message;



public String getMessage() {

return message;

}



public void setMessage(String message) {

this.message = message;

}

}











web.xml:





<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" <br="">xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/javaee

http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">



<filter>

<filter-name>struts2</filter-name>

<filter-class>

org.apache.struts2.dispatcher.FilterDispatcher

</filter-class>

</filter>



<filter-mapping>

<filter-name>struts2</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>



  <welcome-file-list>

    <welcome-file>index.jsp</welcome-file>

  </welcome-file-list>

</web-app>


问题补充:
我看了一下。好像是说我在系统里已经有了另外一个不同版本(或者相同版本)的struts2 core .jar 。



的确是这样。但是我把我原来拷贝到TOMCAT\LIB下的struts2的那些jar删除后。也不行哦。究竟是什么回事呢?



郁闷ing...

简单的struts2应用只需要的几个包:
struts2-core_2.0.1x.jar
xwork-2.0x.jar
ognl-2.6.11.jar
freemarker-2.3.8.jar
oro-2.0.8.jar
就可以了...
其他就是些常用的commons包了

很明确的是 包有问题

包没有引入完整

包 冲突!

看看 struts2 的 附带的 showcase example

http://www.iteye.com/topic/255542 :P 看看这个