用struts2 spring hibernate做了个小程序,但是每次部署时都是报以下错误,我的各个jar文件都引了,试了好几次,就是不对,大家帮帮我吧!
2010-4-24 20:33:18 org.apache.catalina.core.StandardContext filterStart
严重: Exception starting filter struts2
Unable to load configuration. - bean - jar:file:/C:/tomcat6/webapps/blog-ssh/WEB-INF/lib/struts2-spring-plugin-2.1.6.jar!/struts-plugin.xml:29:132
 at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:58)
 at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:360)
 at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:403)
 at org.apache.struts2.dispatcher.FilterDispatcher.init(FilterDispatcher.java:190)
 at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:295)
 at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:422)
 at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:115)
 at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3838)
 at org.apache.catalina.core.StandardContext.start(StandardContext.java:4488)
 at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
 at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
 at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:526)
 at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1041)
 at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:964)
 at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:502)
 at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1277)
 at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:321)
 at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
 at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
 at org.apache.catalina.core.StandardHost.start(StandardHost.java:722)
 at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
 at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
 at org.apache.catalina.core.StandardService.start(StandardService.java:516)
 at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
 at org.apache.catalina.startup.Catalina.start(Catalina.java:593)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
 at java.lang.reflect.Method.invoke(Method.java:597)
 at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
 at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Caused by: Unable to load bean: type:com.opensymphony.xwork2.ObjectFactory class:org.apache.struts2.spring.StrutsSpringObjectFactory - bean - jar:file:/C:/tomcat6/webapps/blog-ssh/WEB-INF/lib/struts2-spring-plugin-2.1.6.jar!/struts-plugin.xml:29:132
 at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.register(XmlConfigurationProvider.java:222)
 at org.apache.struts2.config.StrutsXmlConfigurationProvider.register(StrutsXmlConfigurationProvider.java:101)
 at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:165)
 at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:55)
 ... 30 more
Caused by: Bean type class com.opensymphony.xwork2.ObjectFactory with the name spring has already been loaded by bean - jar:file:/C:/tomcat6/lib/struts2-spring-plugin-2.1.6.jar!/struts-plugin.xml:29:132 - bean - jar:file:/C:/tomcat6/webapps/blog-ssh/WEB-INF/lib/struts2-spring-plugin-2.1.6.jar!/struts-plugin.xml:29:132
 at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.register(XmlConfigurationProvider.java:206)
 ... 33 more

解决方案 »

  1.   

    重新配置tomcat??我做其他程序都没错,为什么要我重新配置tomcat?
      

  2.   

    好的!这是struts.xml文件<?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
        "http://struts.apache.org/dtds/struts-2.0.dtd"><struts> <constant name="struts.objectFactory" value="spring"></constant> <package name="Admin" namespace="/admin" extends="struts-default">
    <action name="editBlog" class="blogAction" method="edit">
    <result name="success">/admin/blogManage.jsp</result>
    </action>
    <action name="updateBlog" class="blogAction" method="update">
    <result name="success" type="redirect">/admin/editBlog</result>
    </action>
    </package>
    </struts>
      

  3.   

    <constant name="struts.objectFactory" value="spring"></constant>
    这句是多余的......struts2默认在初始化的时候已经加载spring了...你写这句告诉了struts2再次加载一次...所以抱异常了...
      

  4.   

    我把<constant name="struts.objectFactory" value="spring"></constant>
    这句话去掉了,删除原来的部署,重新部署,重启tomcat,但还是报原来的错误啊
      

  5.   

    commons-logging-api-1.1.jarcommons-fileupload-1.2.1.jarcommons-logging.jarstruts2-spring-plugin-2.1.6.jarfreeer-2.3.13.jar看看差那个导进去看看...
      

  6.   

    struts-plugin.xml:29把这段代码贴上来给我看下...
      

  7.   

    好的,感谢!!<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
        "http://struts.apache.org/dtds/struts-2.0.dtd">
        
    <struts>
        <bean type="com.opensymphony.xwork2.ObjectFactory" name="spring" class="org.apache.struts2.spring.StrutsSpringObjectFactory" />      //这是第29行    
        <!--  Make the Spring object factory the automatic default -->
        <constant name="struts.objectFactory" value="spring" />    <package name="spring-default">
            <interceptors>
                <interceptor name="autowiring" class="com.opensymphony.xwork2.spring.interceptor.ActionAutowiringInterceptor"/>
                <interceptor name="sessionAutowiring" class="org.apache.struts2.spring.interceptor.SessionContextAutowiringInterceptor"/>
            </interceptors>
        </package>    
    </struts>
      

  8.   

    struts2-spring-plugin-2.1.6.jar
    这个包是不是有问题?以前用的有问题吗?
      

  9.   

    谢谢你啊!
    没问题啊,今天下午的时候我用的是struts2-spring-plugin-2.1.8.1.jar ,但是我百度,Google一下,说可能是版本问题,后来我又换的是struts2-spring-plugin-2.1.6。jar,以前用也没问题啊
      

  10.   

    好的,这是web.xml文件<?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
    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"> <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/applicationContext.xml</param-value>
    </context-param> <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener> <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>
      

  11.   

    下午用这个struts2-spring-plugin-2.1.8.1.jar 的时候没报错吗?就是用struts2-spring-plugin-2.1.6.jar报错的吗?
      

  12.   

    放在了src文件夹下,我用的是myEclipse8.0
      

  13.   

    不,都报错了,都是这个错,用2.1.8.1.jar就说它错,用2.1.6.jar又说它错 
      

  14.   

    你的TOMCAT的路径有空格吗?如果有的话也会出现无法加载的异常,安装的目录不能带空格...
      

  15.   

    没有空格啊,安装的目录就是C:\tomcat6
      

  16.   


    <filter>
    <filter-name>struts2</filter-name>
    <filter-class>
    org.apache.struts2.dispatcher.FilterDispatcher
    </filter-class>
    <init-param>
    <param-name>config</param-name>
    <param-value>
    struts-default.xml,struts-plugin.xml,struts.xml
    </param-value>
    </init-param>
    </filter>
    你这样加下看看行不...
      

  17.   

    是不是,有什么jar文件冲突啊??
      

  18.   

    我也不知道了....因为我没碰到过你这种原因....我只能从struts2的结构上帮分析的,可能别人碰到过吧....我实在没办法了....不好意思啊...
      

  19.   

    你这个问题是已经加载了一次了....MAP中已经有了这个JAR下的CLASS,但后面又加载了一次,无法覆盖前面的CLASS,你只有等遇到过这样问题的人来帮你解决了...
      

  20.   


    添加:
    commons-fileupload-1.2.1.jar  commons-io-1.3.2.jar  猫猫在工程里确实没有发现这两个包,因为struts2的默认拦截器栈有文件上传的拦截器,于是这两个包就成了必须包.于是猫猫加入了:commons-io-1.3.2.jar、commons-fileupload-1.2.1.jar.异常没有解决.其实仔细观察这个异常信息,就已经指明了异常出现的问题:Caused by: Bean type class com.opensymphony.xwork2.ObjectFactory with the name xwork has already been loaded by bean - jar:file:/D:/Program%20Files/Apache%20Software%20Foundation/Tomcat%206.0/webapps/BookStore/WEB-INF/lib/struts2-core-2.0.12.jar!/struts-default.xml:30:72 - bean - jar:file:/D:/Program%20Files/Apache%20Software%20Foundation/Tomcat%206.0/webapps/BookStore/WEB-INF/lib/struts2-core-2.1.6.jar!/struts-default.xml:29:72
     at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.register  根据这句,猫猫发现,之前替换掉的struts和xwork的包没有删掉,还留在lib目录下.删除后,工程部署,运行成功!
      

  21.   

    天啊,我就做了一个ssh的小小的例子,怎么就这么折磨我啊!来回报这个错误,怎么改都是这个错误!
      

  22.   

    感谢大家帮助!我解决了,情况是这样的我把struts2-spring-plugin-2.1.8.1.jar文件放在了tomcat的lib文件夹下,可能是跟其他jar文件冲突,我又把struts2-spring-plugin-2.1.8.1.jar文件放在了其他文件夹下,这回部署,启动tomcat,哈哈~~成功!!但是又遇到了这个问题,大家帮我看看!!谢谢了!!
    就是我能查找记录,但是不能更新记录!说是缓存问题!以下是抛出的违例:java.lang.reflect.InvocationTargetException
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    java.lang.reflect.Method.invoke(Method.java:597)
    com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:441)
    com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:280)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:243)
    com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:165)
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:252)
    org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:122)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:179)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:94)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:235)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:89)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:130)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:126)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:138)
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:165)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:179)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:176)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)
    org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:488)
    org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:395)
    在MyEclipse终端上显示的是:38235 [http-8088-1] WARN org.hibernate.cache.ReadWriteCache - An item was expired by the cache while it was locked (increase your cache timeout): model.Blog#1  //Blog是我的持久类
      

  23.   

    还有Blog对象的HIBERNATE.cft.xml配置也贴下..
      

  24.   

    这是blog类import static javax.persistence.GenerationType.IDENTITY;import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.GeneratedValue;
    import javax.persistence.Id;
    import javax.persistence.Table;import org.hibernate.annotations.Cache;
    import org.hibernate.annotations.CacheConcurrencyStrategy;@Entity
    @Table(name = "blog")
    @Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
    public class Blog implements java.io.Serializable { private static final long serialVersionUID = -413395414698213950L;
    private Integer id;
    private String name;
    private String description;        public Blog() {
    } @Id
    @GeneratedValue(strategy = IDENTITY)
    @Column(name = "id", unique = true, nullable = false)
    public Integer getId() {
    return this.id;
    } public void setId(Integer id) {
    this.id = id;
    } @Column(name = "name", length = 40)
    public String getName() {
    return this.name;
    } public void setName(String name) {
    this.name = name;
    } @Column(name = "description", length = 200)
    public String getDescription() {
    return this.description;
    } public void setDescription(String description) {
    this.description = description;
    }
      

  25.   

    @Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
    这句应出现问题,你应该告诉CACHE保存的时间是多少....不然容易超时....
      

  26.   

    @CACHE有很多个参数的,你具体自己试下....
      

  27.   

    但是我用的是ehcache设置的,在ehcache.xml中配置的一些设置
      

  28.   

    这是ehcache.xml代码<?xml version="1.0" encoding="UTF-8"?>
    <ehcache>
    <diskStore path="java.io.tmpdir" />
    <defaultCache maxElementsInMemory="1000" eternal="false"
    overflowToDisk="false" timeToIdleSeconds="120" timeToLiveSeconds="120" /> <cache name="model.Blog" maxElementsInMemory="5" eternal="false"
    overflowToDisk="true" timeToIdleSeconds="120" timeToLiveSeconds="120" />
    </ehcache>
      

  29.   

    每次运行都说
    38235 [http-8088-1] WARN org.hibernate.cache.ReadWriteCache - An item was expired by the cache while it was locked (increase your cache timeout)
    在哪看缓存的超时时间啊?(郁闷了)