2014-09-12 1 views
2

При развертывании моего архива войны я получаю ниже исключение:

SEVERE: Exception starting filter struts2 
com.opensymphony.xwork2.inject.ContainerImpl$MissingDependencyException: No mapping found for dependency [type=com.opensymphony.xwork2.ObjectFactory, name='default'] in public void com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.setObjectFactory(com.opensymphony.xwork2.ObjectFactory). - Class: com.opensymphony.xwork2.inject.ContainerImpl 
File: ContainerImpl.java 
Method: addInjectorsForMembers 
Line: 144 - com/opensymphony/xwork2/inject/ContainerImpl.java:144:-1 
     at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:501) 
     at org.apache.struts2.dispatcher.ng.InitOperations.initDispatcher(InitOperations.java:74) 
     at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.init(StrutsPrepareAndExecuteFilter.java:57) 
     at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:279) 
     at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:260) 
     at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:105) 
     at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4809) 
     at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5485) 
     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
     at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901) 
     at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877) 
     at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:632) 
     at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1073) 
     at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1857) 
     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) 
     at java.util.concurrent.FutureTask.run(FutureTask.java:262) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
     at java.lang.Thread.run(Thread.java:745) 
Caused by: com.opensymphony.xwork2.inject.DependencyException: com.opensymphony.xwork2.inject.ContainerImpl$MissingDependencyException: No mapping found for dependency [type=com.opensymphony.xwork2.ObjectFactory, name='default'] in public void com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.setObjectFactory(com.opensymphony.xwork2.ObjectFactory). 
     at com.opensymphony.xwork2.inject.ContainerImpl.addInjectorsForMembers(ContainerImpl.java:144) 
     at com.opensymphony.xwork2.inject.ContainerImpl.addInjectorsForMethods(ContainerImpl.java:113) 
     at com.opensymphony.xwork2.inject.ContainerImpl.addInjectors(ContainerImpl.java:90) 
     at com.opensymphony.xwork2.inject.ContainerImpl.addInjectors(ContainerImpl.java:86) 
     at com.opensymphony.xwork2.inject.ContainerImpl$1.create(ContainerImpl.java:71) 
     at com.opensymphony.xwork2.inject.ContainerImpl$1.create(ContainerImpl.java:67) 
     at com.opensymphony.xwork2.inject.util.ReferenceCache$CallableCreate.call(ReferenceCache.java:150) 
     at java.util.concurrent.FutureTask.run(FutureTask.java:262) 
     at com.opensymphony.xwork2.inject.util.ReferenceCache.internalCreate(ReferenceCache.java:76) 
     at com.opensymphony.xwork2.inject.util.ReferenceCache.get(ReferenceCache.java:116) 
     at com.opensymphony.xwork2.inject.ContainerImpl.inject(ContainerImpl.java:490) 
     at com.opensymphony.xwork2.inject.ContainerImpl$6.call(ContainerImpl.java:530) 
     at com.opensymphony.xwork2.inject.ContainerImpl$6.call(ContainerImpl.java:528) 
     at com.opensymphony.xwork2.inject.ContainerImpl.callInContext(ContainerImpl.java:584) 
     at com.opensymphony.xwork2.inject.ContainerImpl.inject(ContainerImpl.java:528) 
     at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:257) 
     at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:67) 
     at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:445) 
     at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:489) 

Я включил struts-default.xml в init-param в web.xml, как предложено некоторыми сообщениями.

Еще не работает!

Я ничего не пропустил?

web.xml аналогична, как показано ниже

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
    id="WebApp_ID" version="3.0"> 

    <display-name>Struts 2</display-name> 
    <welcome-file-list> 
     <welcome-file>index.jsp</welcome-file> 
    </welcome-file-list> 
    <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> 
</web-app> 

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.devMode" value="true" /> 
    <package name="helloworld" extends="struts-default"> 

     <action name="hello" 
      class="com.tutorialspoint.struts2.HelloWorldAction" 
      method="execute"> 
      <result name="success">/HelloWorld.jsp</result> 
     </action> 
    </package> 
</struts> 
+0

Показать файлы 'struts.xml' и' web.xml'. –

+0

Привет, Александр, содержимое этих файлов похоже на то, что я опубликовал. –

+0

Сначала исправьте ошибки, которые указал Андреа в его ответ. –

ответ

1
  1. уронить FilterDispatcher, что является устаревшим, and set the new filter.
  2. Исправить ваши DTD: в web.xml Вы смешиваете 2.5 с 3.0. Все 2.5 или все 3.0 (или все 2.4, в соответствии с вашими спецификациями сервера приложений). В struts.xml он должен быть 2.3, если вы не используете действительно старую версию (и вы должны не).
  3. Убедитесь, что вы включили all the required dependencies, каждый только один раз, и все с справа версий.
+0

Вы можете исправить свои ссылки? Они сломались. –

+0

@ChrisAldrich Конечно, сделано. Ссылки сломаны из-за миграции документации Apache пару месяцев назад. Прежде чем документы были разделены (и дублированы) на версию, теперь они объединены. –

+1

Thnx! Ценить это. –

0

Я столкнулся с той же проблемой. Я переместил файл struts.xml в папку ресурсов, чтобы он попал в путь класса. Я удалил параметр init для фильтра StrutsPrepareAndExecuteFilter, который указывал на расположение расположений. Я использую ниже версии библиотек, а также maven.

<struts.version>2.3.16.3</struts.version> 
<spring.version>4.1.2.RELEASE</spring.version> 
<struts.spring.plugin>2.3.16.3</struts.spring.plugin>