请教个问题 为什么tomcat下无法运行两个struts2项目? 有什么办法可以解决?我的tomcat是6.0

解决方案 »

  1.   

    启动tomcat时报错2008-4-26 10:54:55 org.apache.catalina.core.StandardContext filterStart
    严重: Exception starting filter struts2
    Caught exception while loading file struts-default.xml - [unknown location]
    at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadConfigurationFiles(XmlConfigurationProvider.java:839)
    at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadDocuments(XmlConfigurationProvider.java:131)
    at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.init(XmlConfigurationProvider.java:100)
    at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reload(DefaultConfiguration.java:130)
    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:201)
    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:3693)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4342)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:761)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:741)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
    at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:920)
    at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:883)
    at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:492)
    at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1138)
    at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:120)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1023)
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1015)
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
    at org.apache.catalina.core.StandardService.start(StandardService.java:448)
    at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:552)
    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:288)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
    Caused by: java.lang.ClassCastException: org.apache.xerces.parsers.XML11Configuration cannot be cast to org.apache.xerces.xni.parser.XMLParserConfiguration
    at org.apache.xerces.parsers.DOMParser.<init>(Unknown Source)
    at org.apache.xerces.parsers.DOMParser.<init>(Unknown Source)
    at org.apache.xerces.jaxp.DocumentBuilderImpl.<init>(Unknown Source)
    at org.apache.xerces.jaxp.DocumentBuilderFactoryImpl.newDocumentBuilder(Unknown Source)
    at com.sun.org.apache.xalan.internal.xsltc.trax.SAX2DOM.<init>(SAX2DOM.java:69)
    at com.sun.org.apache.xalan.internal.xsltc.runtime.output.TransletOutputHandlerFactory.getSerializationHandler(TransletOutputHandlerFactory.java:187)
    at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.getOutputHandler(TransformerImpl.java:392)
    at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerHandlerImpl.setResult(TransformerHandlerImpl.java:137)
    at com.opensymphony.xwork2.util.DomHelper$DOMBuilder.setup(DomHelper.java:213)
    at com.opensymphony.xwork2.util.DomHelper$DOMBuilder.<init>(DomHelper.java:198)
    at com.opensymphony.xwork2.util.DomHelper$DOMBuilder.<init>(DomHelper.java:189)
    at com.opensymphony.xwork2.util.DomHelper$DOMBuilder.<init>(DomHelper.java:175)
    at com.opensymphony.xwork2.util.DomHelper.parse(DomHelper.java:115)
    at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadConfigurationFiles(XmlConfigurationProvider.java:830)
    ... 34 more
      

  2.   

    难道你想同时运行两个struts2项目?如果不是,或许在项目加载时出现了客串。因为都是struts项目有相同的配置文件名之类的。可以先把当前不需要运行的项目关掉
      

  3.   

    是的 无法同时运行两个struts2项目吗?
      

  4.   

    我也初学struts2 我看不懂你出现的问题
    但是有一点可以肯定 
    tomcat 可以运行多个struts2 
      

  5.   

    贴下web.xml
     和struts.xml
    想问的是:
    单独都能运行吗 这2个项目
      

  6.   

    单独的都可以运行 项目框架 :struts2 hibernate3 spring2web.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">
    <!-- 引入spring配置开始 -->
    <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:applicationContext*.xml</param-value>
    </context-param>
    <listener>
    <listener-class>
    org.springframework.web.context.ContextLoaderListener
    </listener-class>
    </listener>
    <!-- Spring 刷新Introspector防止内存泄露 -->
    <listener>
    <listener-class>
    org.springframework.web.util.IntrospectorCleanupListener
    </listener-class>
    </listener>
    <!--Hibernate Open Session in View Filter-->
    <filter>
    <filter-name>hibernateFilter</filter-name>
    <filter-class>
    org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
    </filter-class>
    </filter>
    <filter-mapping>
    <filter-name>hibernateFilter</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping>
    <!-- spring 字符过滤器 -->
    <filter>
    <filter-name>encodingFilter</filter-name>
    <filter-class>
    org.springframework.web.filter.CharacterEncodingFilter
    </filter-class>
    <init-param>
    <param-name>encoding</param-name>
    <param-value>UTF-8</param-value>
    </init-param>
    <init-param>
    <param-name>forceEncoding</param-name>
    <param-value>true</param-value>
    </init-param>
    </filter>
    <filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping> <!-- 引入spring配置结束 -->
    <!-- 引入struts2配置开始 -->
    <filter>
    <filter-name>struts-cleanup</filter-name>
    <filter-class>
    org.apache.struts2.dispatcher.ActionContextCleanUp
    </filter-class>
    </filter> <filter>
    <filter-name>struts2</filter-name>
    <filter-class>
    org.apache.struts2.dispatcher.FilterDispatcher
    </filter-class>
    </filter> <filter-mapping>
    <filter-name>struts-cleanup</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping> <filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>*.action</url-pattern>
    </filter-mapping>
    <!-- 引入struts2配置结束 -->
    <!-- session 有效时间 -->
    <session-config>
    <session-timeout>20</session-timeout>
    </session-config>
    <servlet>       <servlet-name>dwr-invoker</servlet-name>       <servlet-class>           org.directwebremoting.spring.DwrSpringServlet       </servlet-class>       <init-param>           <param-name>debug</param-name>           <param-value>true</param-value>

           </init-param>

    <init-param>
    <param-name>pollAndCometEnabled</param-name>

    <param-value>true</param-value>
    </init-param>
        </servlet>    <servlet-mapping>       <servlet-name>dwr-invoker</servlet-name>       <url-pattern>/dwr/*</url-pattern>    </servlet-mapping>
    <!-- 首页导航 -->
    <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
    <!-- 错误异常页面配置 -->
    <error-page>
    <error-code>401</error-code>
    <location>/401.htm</location>
    </error-page>
    <error-page>
    <error-code>403</error-code>
    <location>/403.htm</location>
    </error-page>
    <error-page>
    <error-code>404</error-code>
    <location>/404.htm</location>
    </error-page>
    <error-page>
    <error-code>500</error-code>
    <location>/500.htm</location>
    </error-page>
    </web-app>struts.xml:
    <!DOCTYPE struts PUBLIC
            "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
            "http://struts.apache.org/dtds/struts-2.0.dtd"><struts>
    <include file="struts-plugin.xml" />
    <include file="struts-default.xml" />
    <package name="test" extends="struts-default"
    namespace="/test">
    <action name="test" class="testAction">
    <result name="success">/test/index.jsp
    </result>
    </action>
    </package>
    <package name="ycsb" extends="struts-default">
    <action name="IntervalTemplate" class="IntervalTemplateaction">
    <result>/xxt/intervalTemplate.jsp</result>
    </action>
    <action name="sblr" class="SblrAction">
    <result>/xxt/sblr.jsp</result>
    </action>
    </package>
    <package name="file" extends="struts-default">
    <action name="upload" class="upload">
    <param name="allowTypes">image/bmp,image/gif,image/jpeg,image/jpg</param>
    <param name="savePath">/img</param>
    <result name="success">/index.jsp</result>
    <result name="input">/index.jsp</result>
    </action>
    <action name="uploadPage" class="upload" method="upload"> 
    <result name="success">/fileupload/fileUpload.jsp</result>
    <result name="input">/index.jsp</result>
    </action>
    <action name="getImg" class="upload" method="imgAction">
    <result name="success">/index.jsp</result>
    <result name="input">/index.jsp</result>
    </action>
    </package>
    <package name="jsontest"  extends="json-default">
    <action name="getImg" class="getImgAction">
    <result type="json"/>
    </action>
    <action name="getMenu" class="getMenuAction">
    <result type="json"></result>
    </action>
    </package>
    </struts>
      

  7.   

    我一般是以plugin的方式把spring集成到struts中你把2个项目 都各自放到2级目录下
      

  8.   

    你是不是把一些jar包放到tomcat lib下面去了,应该也可以运行啊,
      

  9.   


    JAR包都放在项目下面的 LIB里
      

  10.   

    你的spring配置在web.xml中,而我的是在struts-config.xml中。
    <listener>
    <listener-class>
    org.springframework.web.context.ContextLoaderListener
    </listener-class>
    </listener>我的是这样:
      <plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">    <set-property property="contextConfigLocation" value="/WEB-INF/applicationContext.xml" />  </plug-in> 
      

  11.   

    我的是struts2啊 哪有struts-config.xml啊
      

  12.   

    Caused by: java.lang.ClassCastException: org.apache.xerces.parsers.XML11Configuration cannot be cast to org.apache.xerces.xni.parser.XMLParserConfiguration 
    at org.apache.xerces.parsers.DOMParser. <init>(Unknown Source) 
    感觉是XML解析包的问题。
    tomcat的servlet容器对于每个war都是独立的类加载器,只有tomcat_home\lib下的jar是共享类加载的。因此还是从你的应用程序本身找问题吧。
      

  13.   

    这不是个问题,两个项目不能同时在tomcat下运进,会报Caught exception while loading file struts-default.xml - [unknown location] 
    这是jar的问题,知道就可以了,
      

  14.   

    同意18楼的.是因为你的TOMCAT中的XML解析包与你工程中的配置文件XML 不匹配.
    以前我就出现过这种问题.还有一个问题是,如果你二个工程项目中,配置文件都一样的情况下,有些时候也会跑不起来.具体为什么原因我只知道的是,容器面临二个相同的名称的时候, 不知道加载哪一个.有待高手进一步说明原理!
      

  15.   


    XML 解析包不匹配的话 下个就可以了? 继续期待、。。
      

  16.   

    你的struts.xml也是一样的
    在这里加载你的spring(以plugin形式),而不是在web.xml里加载
     
      

  17.   

    "Caught exception while loading file struts-default.xml - [unknown location] "
    你的default.xml配置出现问题,tomcat找不到。
    “Caused by: java.lang.ClassCastException: org.apache.xerces.parsers.XML11Configuration cannot be cast to org.apache.xerces.xni.parser.XMLParserConfiguration”
    由于你的工程中xml文件里配置错误,在tomcat 中xml解析包没有办法解析。你检查你的工程xml中XML11Configuration类型的参数。
      

  18.   

    plugin形式 我试了 也不可以  ,XML文件我检查了 没发现错误 我现在郁闷的是  一个项目 运行没事 两个同时运行就会出错
      

  19.   

    WEB-APP这个有没有在加载的时候指定?同样一样的项目,跑起来如果不指定就会出现一个错误,你可以进入TOMCAT后台管理界面看到,这就是要你指定一个名称,然后就可以了
      

  20.   

    你是不是运行两个同样名称的项目?
    看我的博客:
    http://blog.csdn.net/cchaha/archive/2007/10/24/1841267.aspx
      

  21.   

    可能是你没有两个path  http://localhost/yourprojectname
      

  22.   

    http://hi.csdn.net/dlyhlq
      

  23.   

    我也遇到这个问题,搞了几天,发现是由于lib包冲突造成的,将两个解析xml用的jar从项目里移到tomacat的lib下面就ok了,xml-apis.jar xerces-2.6.2.jar
      

  24.   

    xml-apis.jar、xerces-2.6.2.jar复制到tomacat的lib下,楼上的方法正确的。
      

  25.   

    移除项目目录中的xerces.jar 就OK的啦
      

  26.   

    41楼 说的是正确的 直接把报错的那个工程下的 xerces.jar 删掉 就可以部署多个了。
      

  27.   

    xerces.jar 删掉 就可以部署多个了。郁闷了一下午
      

  28.   

    上这个网站去看看。 修改web.xml 中webAppRootKey熟悉的值,
    http://bocolijun.iteye.com/blog/470527