我想將struts2與spring集成。所以我在我的web-inf/classes文件夾中使用了follwing代碼。如何解決無法初始化類org.springframework.web.context.ContextLoader?
的applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="helloWorldClass" class="com.test.spring.HelloWorld" >
<property name="message" value="Hello World!" />
</bean>
</beans>
struts.xml中
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<struts-config>
<!-- Spring Struts plugin -->
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation"
value="/WEB-INF/classes/applicationContext.xml" />
</plug-in>
</struts-config>
<constant name="struts.devMode" value="false" />
<constant name="struts.objectFactory" value="spring" />
<package name="default" extends="struts-default">
<action name="helloWorld" class="helloWorldClass">
<result name="SUCCESS">/success.jsp</result>
</action>
</package>
</struts>
我已經使用了這些文件和一個類,這是的helloWorld與封裝com.test.spring。類中只包含變量消息的getter/setter方法。
在pom.xml文件內容:
<repositories>
<repository>
<id>jboss-snapshots</id>
<url>http://snapshots.jboss.org/maven2</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
<repository>
<id>opensymphony-releases</id>
<name>Opensymphony Releases</name>
<url>https://oss.sonatype.org/content/repositories/opensymphony-releases</url>
</repository>
<repository>
<id>mvn-adamgent</id>
<url>http://mvn-adamgent.googlecode.com/svn/maven/release</url>
<name>Adam Gent Maven Repository</name>
</repository>
<repository>
<id>maven2-repository.dev.java.net</id>
<name>Java.net Repository for Maven</name>
<url>http://download.java.net/maven/2/</url>
<layout>default</layout>
</repository>
<repository>
<id>springsource-milestones</id>
<name>SpringSource Milestones Proxy</name>
<url>https://oss.sonatype.org/content/repositories/springsource-milestones</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.2.1</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-io</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.13</version>
</dependency>
<dependency>
<groupId>opensymphony</groupId>
<artifactId>ognl</artifactId>
<version>2.6.11</version>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-convention-plugin</artifactId>
<version>2.1.6</version>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>2.1.6</version>
</dependency>
<dependency>
<groupId>com.opensymphony</groupId>
<artifactId>xwork</artifactId>
<version>2.1.2</version>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-spring-plugin</artifactId>
<version>2.1.6</version>
</dependency>
<dependency>
<groupId>org.antlr</groupId>
<artifactId>antlr-runtime</artifactId>
<version>3.1.3</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>3.0.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>3.0.5.RELEASE</version>
</dependency>
<!-- Spring framework -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
<version>2.5.6</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>2.5.6</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-struts</artifactId>
<version>2.0.8</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>2.5.6</version>
</dependency>
</dependencies>
<build>
<finalName>testspring</finalName>
</build>
</project>
通過使用這個文件我已經在目標下載jar文件在WEB-INF/lib文件夾。
當我在glassfish服務器上傳這個war文件時,它顯示下面的錯誤信息。在加載應用程序異常:java.lang.IllegalStateException:ContainerBase.addChild:啓動:org.apache.catalina.LifecycleException:java.lang.NoClassDefFoundError:在部署過程中發生
錯誤無法初始化類org.springframework。 web.context.ContextLoader。有關更多詳細信息,請參閱server.log。
任何人都可以請幫我解決這個錯誤,以及如何將struts2與spring集成。
在此先感謝。
爲什麼你在你的應用中同時使用Spring 3和Spring 2?國際海事組織你在你的麻煩做錯了。首先,您應該使用爲您處理集成的Struts 2 Spring Plugin。其次,你應該使用Maven來實際處理你的傳遞依賴,而不是僅僅手動做它們。 –
@DaveNewton:我想在我的struts2 web應用程序中使用spring概念Ioc和DI。這就是爲什麼需要將兩者整合到我的應用程序中。你能告訴我所需的jar文件/這個在pom文件中集成所需的依賴嗎? – shiva
您不需要彈簧2 *和*彈簧3來使用彈簧。選擇一個版本。你需要s2彈簧插件,它引入了所有其他的依賴關係。這就是maven的用途:管理依賴關係,所以你不必這樣做。 (通常) –