-2

Struts 2 と Spring 3 を使用しています。Bean を注入できず、filterRunTimeExceptionを開始できません。struts2次のjarファイルを使用しています

サーブレット-api-2.4.jar、struts2-spring-plugin-2.1.6.jar、struts2-spring-plugin-2.1.6.jar、org.springframework.beans-3.0.0.M3.jar、xwork-2.0。 2.jar、struts2-core-2.0.12.jar など

SEVERE: Exception starting filter struts2
    java.lang.RuntimeException: java.lang.RuntimeException: java.lang.RuntimeException: com.opensymphony.xwork2.inject.DependencyException: com.opensymphony.xwork2.inject.ContainerImpl$MissingDependencyException: No mapping found for dependency [type=java.lang.String, name='struts.objectFactory.spring.autoWire.alwaysRespect'] in public org.apache.struts2.spring.StrutsSpringObjectFactory(java.lang.String,java.lang.String,java.lang.String,javax.servlet.ServletContext).
        at com.opensymphony.xwork2.inject.ContainerImpl$MethodInjector.inject(ContainerImpl.java:290)
        at com.opensymphony.xwork2.inject.ContainerImpl$2.call(ContainerImpl.java:117)
        at com.opensymphony.xwork2.inject.ContainerImpl$2.call(ContainerImpl.java:115)
        at com.opensymphony.xwork2.inject.ContainerImpl.callInContext(ContainerImpl.java:542)
        at com.opensymphony.xwork2.inject.ContainerImpl.injectStatics(ContainerImpl.java:114)
        at com.opensymphony.xwork2.inject.ContainerBuilder.create(ContainerBuilder.java:494)
        at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reload(DefaultConfiguration.java:145)
        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: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:4071)
        at org.apache.catalina.core.StandardContext.start(StandardContext.java:4725)
        at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
        at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)
        at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
        at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
        at org.apache.catalina.core.StandardService.start(StandardService.java:525)
        at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
        at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
        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: java.lang.RuntimeException: java.lang.RuntimeException: com.opensymphony.xwork2.inject.DependencyException: com.opensymphony.xwork2.inject.ContainerImpl$MissingDependencyException: No mapping found for dependency [type=java.lang.String, name='struts.objectFactory.spring.autoWire.alwaysRespect'] in public org.apache.struts2.spring.StrutsSpringObjectFactory(java.lang.String,java.lang.String,java.lang.String,javax.servlet.ServletContext).
        at com.opensymphony.xwork2.inject.ContainerBuilder$4.create(ContainerBuilder.java:136)
        at com.opensymphony.xwork2.inject.Scope$2$1.create(Scope.java:49)
        at com.opensymphony.xwork2.inject.ContainerImpl$ParameterInjector.inject(ContainerImpl.java:431)
        at com.opensymphony.xwork2.inject.ContainerImpl.getParameters(ContainerImpl.java:446)
        at com.opensymphony.xwork2.inject.ContainerImpl.access$000(ContainerImpl.java:48)
        at com.opensymphony.xwork2.inject.ContainerImpl$MethodInjector.inject(ContainerImpl.java:288)
        ... 28 more
    Caused by: java.lang.RuntimeException: com.opensymphony.xwork2.inject.DependencyException: com.opensymphony.xwork2.inject.ContainerImpl$MissingDependencyException: No mapping found for dependency [type=java.lang.String, name='struts.objectFactory.spring.autoWire.alwaysRespect'] in public org.apache.struts2.spring.StrutsSpringObjectFactory(java.lang.String,java.lang.String,java.lang.String,javax.servlet.ServletContext).
        at com.opensymphony.xwork2.inject.ContainerImpl.inject(ContainerImpl.java:464)
        at com.opensymphony.xwork2.inject.ContainerImpl$7.call(ContainerImpl.java:501)
        at com.opensymphony.xwork2.inject.ContainerImpl.callInContext(ContainerImpl.java:549)
        at com.opensymphony.xwork2.inject.ContainerImpl.inject(ContainerImpl.java:499)
        at com.opensymphony.xwork2.config.impl.LocatableFactory.create(LocatableFactory.java:32)
        at com.opensymphony.xwork2.inject.ContainerBuilder$4.create(ContainerBuilder.java:134)
        ... 33 more
    Caused by: com.opensymphony.xwork2.inject.DependencyException: com.opensymphony.xwork2.inject.ContainerImpl$MissingDependencyException: No mapping found for dependency [type=java.lang.String, name='struts.objectFactory.spring.autoWire.alwaysRespect'] in public org.apache.struts2.spring.StrutsSpringObjectFactory(java.lang.String,java.lang.String,java.lang.String,javax.servlet.ServletContext).
        at com.opensymphony.xwork2.inject.ContainerImpl$ConstructorInjector.<init>(ContainerImpl.java:327)
        at com.opensymphony.xwork2.inject.ContainerImpl$5.create(ContainerImpl.java:299)
        at com.opensymphony.xwork2.inject.ContainerImpl$5.create(ContainerImpl.java:298)
        at com.opensymphony.xwork2.inject.util.ReferenceCache$CallableCreate.call(ReferenceCache.java:155)
        at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
        at java.util.concurrent.FutureTask.run(FutureTask.java:138)
        at com.opensymphony.xwork2.inject.util.ReferenceCache.internalCreate(ReferenceCache.java:81)
        at com.opensymphony.xwork2.inject.util.ReferenceCache.get(ReferenceCache.java:121)
        at com.opensymphony.xwork2.inject.ContainerImpl.getConstructor(ContainerImpl.java:562)
        at com.opensymphony.xwork2.inject.ContainerImpl.inject(ContainerImpl.java:460)
        ... 38 more
    Caused by: com.opensymphony.xwork2.inject.ContainerImpl$MissingDependencyException: No mapping found for dependency [type=java.lang.String, name='struts.objectFactory.spring.autoWire.alwaysRespect'] in public org.apache.struts2.spring.StrutsSpringObjectFactory(java.lang.String,java.lang.String,java.lang.String,javax.servlet.ServletContext).
        at com.opensymphony.xwork2.inject.ContainerImpl.createParameterInjector(ContainerImpl.java:239)
        at com.opensymphony.xwork2.inject.ContainerImpl.getParametersInjectors(ContainerImpl.java:229)
        at com.opensymphony.xwork2.inject.ContainerImpl$ConstructorInjector.<init>(ContainerImpl.java:318)
        ... 47 more
    5 Mar, 2013 6:14:01 PM org.apache.catalina.core.StandardContext start
    SEVERE: Error filterStart
    5 Mar, 2013 6:14:01 PM org.apache.catalina.core.StandardContext start
    SEVERE: Context [/Fundation] startup failed due to previous errors
    5 Mar, 2013 6:14:01 PM org.apache.catalina.core.ApplicationContext log
    INFO: Closing Spring root WebApplicationContext
    5 Mar, 2013 6:14:01 PM org.apache.catalina.loader.WebappClassLoader clearReferencesJdbc
    SEVERE: The web application [/Fundation] registered the JDBC driver [com.microsoft.sqlserver.jdbc.SQLServerDriver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.
    5 Mar, 2013 6:14:01 PM org.apache.catalina.loader.WebappClassLoader clearReferencesJdbc
    SEVERE: The web application [/Fundation] registered the JDBC driver [oracle.jdbc.driver.OracleDriver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.
    5 Mar, 2013 6:14:01 PM org.apache.catalina.loader.WebappClassLoader clearThreadLocalMap
    SEVERE: The web application [/Fundation] created a ThreadLocal with key of type [com.opensymphony.xwork2.inject.ContainerImpl$10] (value [com.opensymphony.xwork2.inject.ContainerImpl$10@7f162a9c]) and a value of type [com.opensymphony.xwork2.inject.InternalContext[]] (value [[Lcom.opensymphony.xwork2.inject.InternalContext;@847a8f3]) but failed to remove it when the web application was stopped. This is very likely to create a memory leak.
    5 Mar, 2013 6:14:02 PM org.apache.catalina.loader.WebappClassLoader validateJarFile
    INFO: validateJarFile(D:\eclipse-indigo\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps\SpringMVCTutorial\WEB-INF\lib\servlet-api-2.4.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class
    5 Mar, 2013 6:14:02 PM org.apache.catalina.core.ApplicationContext log
    INFO: Initializing Spring FrameworkServlet 'SpringMVCTutorial'
    5 Mar, 2013 6:14:02 PM org.springframework.web.servlet.FrameworkServlet initServletBean
    INFO: FrameworkServlet 'SpringMVCTutorial': initialization started
    5 Mar, 2013 6:14:02 PM org.springframework.context.support.AbstractApplicationContext prepareRefresh
    INFO: Refreshing org.springframework.web.context.support.XmlWebApplicationContext@1b83ee9a: display name [WebApplicationContext for namespace 'SpringMVCTutorial-servlet']; startup date [Tue Mar 05 18:14:02 IST 2013]; root of context hierarchy
    5 Mar, 2013 6:14:02 PM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
    INFO: Loading XML bean definitions from ServletContext resource [/WEB-INF/SpringMVCTutorial-servlet.xml]
    5 Mar, 2013 6:14:02 PM org.springframework.context.support.AbstractApplicationContext obtainFreshBeanFactory
    INFO: Bean factory for application context [org.springframework.web.context.support.XmlWebApplicationContext@1b83ee9a]: org.springframework.beans.factory.support.DefaultListableBeanFactory@12f53870
    5 Mar, 2013 6:14:02 PM org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
    INFO: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@12f53870: defining beans [viewResolver,/welcome.htm,springMessage,message]; root of factory hierarchy
    5 Mar, 2013 6:14:02 PM org.springframework.web.servlet.handler.AbstractUrlHandlerMapping registerHandler
    INFO: Mapped URL path [/welcome.htm] onto handler [com.cpt.spring.HelloWorldController@1aad40a0]
    5 Mar, 2013 6:14:02 PM org.springframework.web.servlet.FrameworkServlet initServletBean
4

3 に答える 3

1

struts2コア jar とxworkjar を最新のものにアップグレードする必要があります。stuts2core および struts2spring jar の異なるバージョンを使用すると、問題が発生する可能性があります。

これがお役に立てば幸いです

于 2013-03-06T03:51:04.853 に答える
1

サーブレット仕様を少なくとも 2.4 に変更します。また、Spring プラグインは Spring ライブラリで使用する必要があります。struts.objectFactory.spring.autoWire.alwaysRespect=falseデフォルトである 定数を使用するのに役立たない場合。

于 2013-03-05T17:56:09.837 に答える
-1

私はこの問題を解決しました。最初に struts-spring プラグインを抽出します。中struts2-spring-plugin-x.y.z.jar\org\apache\struts2\springには がありますStrutsSpringObjectFactory.class。任意のクラス エディターを使用して、この .class ファイルを開くことができます。

@Inject(value=StrutsConstants.STRUTS_OBJECTFACTORY_SPRING_AUTOWIRE_ALWAYS_RESPECT,required=false) という行が表示されます。

文字列 alwaysAutoWire が存在します。最後に、メソッド呼び出し

this.setAlwaysRespectAutowireStrategy("true".equalsIgnoreCase(alwaysAutoWire));

が存在し、問題の原因となっています。実際には、このメソッド呼び出しは有効なセッター メソッドにマップできないため、NoSuchMethodError.

この問題を解決するには、struts2-spring-plugin-2.0.11.1.jar をダウンロードして、プロジェクトの lib に追加します。上記のプロセスに従ってこの jar を調べると、setter 呼び出しが見つからないため、エラーは発生しません。それがあなたのために働くことを願っています。

于 2015-03-26T18:24:11.973 に答える