今天學習到strusts2與spring的整合,把原來可以交給spring產生的東西都扔給了它,終於拜託了繁瑣的代碼,只專心於邏輯開發就OK了,現在連strusts的action都可以交給spring容器產生了!
在strusts2和spring整合的時候,必不可少的一個jar包就是struts2-spring-plugin.jar,但是需要注意的是,如果jar包的版本衝突也會報異常的,今天本博就遇到了這樣一個問題。
Unable to load configuration. - bean - jar:file:/E:/Tomcat6/webapps/struts2_3900_and_Spring/WEB-INF/lib/struts2-spring-plugin-2.1.8.1.jar!/struts-plugin.xml:29:132<br />a t com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:58)<br />at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:360)<br />at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:403)<br />at org.apache.struts2.dispatcher.ng.InitOperations.initDispatcher(InitOperations.java:69)<br />at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.init(StrutsPrepareAndExecuteFilter.java:48)<br />at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:295)<br />at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:422)<br />at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:115)<br />at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3838)<br />at org.apache.catalina.core.StandardContext.start(StandardContext.java:4488)<br />at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)<br />at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)<br />at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:546)<br />at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1041)<br />at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:964)<br />at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:502)<br />at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1277)<br />at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:321)<br />at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)<br />at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)<br />at org.apache.catalina.core.StandardHost.start(StandardHost.java:785)<br />at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)<br />at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)<br />at org.apache.catalina.core.StandardService.start(StandardService.java:519)<br />at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)<br />at org.apache.catalina.startup.Catalina.start(Catalina.java:581)<br />at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br />at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)<br />at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)<br />at java.lang.reflect.Method.invoke(Method.java:597)<br />at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)<br />at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)<br />Caused by: Unable to load bean: type:com.opensymphony.xwork2.ObjectFactory class:org.apache.struts2.spring.StrutsSpringObjectFactory - bean - jar:file:/E:/Tomcat6/webapps/struts2_3900_and_Spring/WEB-INF/lib/struts2-spring-plugin-2.1.8.1.jar!/struts-plugin.xml:29:132<br />at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.register(XmlConfigurationProvider.java:222)<br />at org.apache.struts2.config.StrutsXmlConfigurationProvider.register(StrutsXmlConfigurationProvider.java:101)<br />at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:165)<br />at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:55)<br />... 31 more<br />Caused by: java.lang.NoClassDefFoundError: com/opensymphony/xwork2/util/classloader/ReloadingClassLoader<br />at java.lang.Class.getDeclaredConstructors0(Native Method)<br />at java.lang.Class.privateGetDeclaredConstructors(Class.java:2389)<br />at java.lang.Class.getDeclaredConstructors(Class.java:1836)<br />at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.register(XmlConfigurationProvider.java:212)<br />... 34 more<br />Caused by: java.lang.ClassNotFoundException: com.opensymphony.xwork2.util.classloader.ReloadingClassLoader<br />at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1516)<br />at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1361)<br />at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)<br />
認真的檢查了一遍strusts2需要的jar包:strusts2-core2.1.8.1.jar;struts2-spring-plusin-2.1.8.1.jar;xwork-core-2.1.2.jar;ognl-2.6.11.jar等,發現沒有少任何包,那麼也許jar包版本不對,或者jar包之間產生衝突,於是就去strusts2.1.8的lib中找,發現xwork的版本太低了,換成2.1.6版本,問題解決!