2012-10-17 49 views
0

我想將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集成。

在此先感謝。

+0

爲什麼你在你的應用中同時使用Spring 3和Spring 2?國際海事組織你在你的麻煩做錯了。首先,您應該使用爲您處理集成的Struts 2 Spring Plugin。其次,你應該使用Maven來實際處理你的傳遞依賴,而不是僅僅手動做它們。 –

+0

@DaveNewton:我想在我的struts2 web應用程序中使用spring概念Ioc和DI。這就是爲什麼需要將兩者整合到我的應用程序中。你能告訴我所需的jar文件/這個在pom文件中集成所需的依賴嗎? – shiva

+0

您不需要彈簧2 *和*彈簧3來使用彈簧。選擇一個版本。你需要s2彈簧插件,它引入了所有其他的依賴關係。這就是maven的用途:管理依賴關係,所以你不必這樣做。 (通常) –

回答

0

的ContextLoaderPlugin用於在Struts 1.從DOCTYPE在你的struts.xml你使用Struts 2

在這裏看到:

http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/web-integration.html#struts

對Struts 2,你應該使用Struts2的 - 彈簧插件。

+0

我在我的pom文件中使用了這個插件。但是當我將其部署到服務器上時仍然顯示相同的錯誤。請幫忙解決這個問題。 – shiva

+0

您是否在struts config中刪除了插件聲明?確保您的項目中沒有任何對org.springframework.web.struts.ContextLoaderPlugIn的引用。 –

+0

我嘗試了在pom.xml中刪除那個struts2-spring-plugin的應用程序,但它顯示了相同的錯誤消息。無法初始化類org.springframework.web.context.ContextLoader。所以你可以提供你的幫助。 – shiva

相關問題