applicationContext.xml正从src / main / resources复制到/ WEB-INF / classes

时间:2012-07-25 15:12:38

标签: java spring

然而tomcat正在抛出错误:

 IOException parsing XML document from ServletContext resource [/WEB-INF/applicationContext.xml];

这表明tomcat期望applicationContext.xml是上面复制到的目录。它被复制到 / WEB-INF / 目录,而不仅仅是普通的 / WEB-INF

我正在使用maven。

5 个答案:

答案 0 :(得分:6)

如果您将其放在src / main / resources下,则应将资源称为classpath:/applicationContext.xml

答案 1 :(得分:3)

web.xml中,您可以说明applicationContext.xml所在的位置。如果它位于/WEB-INF/classes,那么您必须说明/WEB-INF/classes/applicationContext.xml(而不只是/WEB-INF/applicationContext.xml)。

试试这个:

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
        /WEB-INF/classes/applicationContext.xml
    </param-value>
</context-param>
<listener>
    <listener-class>
        org.springframework.web.context.ContextLoaderListener
    </listener-class>
</listener> 

要包含多个上下文文件,您可以使用import功能。为此,请在每个文件中写入applicationContext.xml一行,如下所示:

<import resource="myOtherSpringContext.xml"/>

答案 2 :(得分:3)

在web.xml(http://static.springsource.org/spring/docs/3.1.x/javadoc-api/org/springframework/web/context/ContextLoader.html)中使用以下语法:

<!-- list of the configuration files to load -->
<context-param>
    <!-- Spring -->
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath*:applicationContext.xml</param-value>
</context-param>

它将从classes / *目录加载它。 顺便说一句,如果你想直接在你的WEB-INF目录中复制applicationContext.xml,请将它移到/ src / main / webapp

顺便说一下,这是spring文档推荐的方式:http://static.springsource.org/spring/docs/3.0.x/reference/beans.html#context-create

HIH

答案 3 :(得分:1)

这是标准的Maven行为,是很多人无异议使用的。你为什么喜欢WEB-INF?

无论如何,如果你想要它,你可以把它放在src/main/webapp/WEB-INF

答案 4 :(得分:0)

标准方法是创建新的源目录src/main/webapp。来自此目录的所有文件将与WEB-INF位于同一文件夹中。因此,在这个新的源目录中,您可以创建WEB-INF并将applicationcontext.xml放入其中。

所以你的结构看起来很像

+src
+---main
+---+---java
+---+---webapp
+---+------WEB-INF

检查maven-war-plugin文档