Java applicationContext.xml正在从src/main/resources复制到/WEB-INF/classes
但是tomcat抛出了错误:Java applicationContext.xml正在从src/main/resources复制到/WEB-INF/classes,java,spring,Java,Spring,但是tomcat抛出了错误: IOException parsing XML document from ServletContext resource [/WEB-INF/applicationContext.xml]; 这表明tomcat希望applicationContext.xml位于复制到的目录之上。它被复制到/WEB-INF/classes目录,而不仅仅是普通的/WEB-INF 我正在使用maven。在您的web.xml中,您可以说明您的applicationContext.xm
IOException parsing XML document from ServletContext resource [/WEB-INF/applicationContext.xml];
这表明tomcat希望applicationContext.xml位于复制到的目录之上。它被复制到/WEB-INF/classes目录,而不仅仅是普通的/WEB-INF
我正在使用maven。在您的
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>
如果已将其置于src/main/resources下,则应将资源称为
classpath:/applicationContext.xml
标准方法是创建新的源目录src/main/webapp
。此目录中的所有文件都将放在与WEB-INF相同的文件夹中,从而导致war。因此,在这个新的源目录中,您可以创建WEB-INF
,并将您applicationcontext.xml
放入其中
所以你的结构看起来很像
+src
+---main
+---+---java
+---+---webapp
+---+------WEB-INF
检查文档在web.xml()中使用以下语法:
上下文配置位置
classpath*:applicationContext.xml
它将从classes/*目录加载它。
顺便说一句,如果要将applicationContext.xml直接复制到WEB-INF目录中,请将其移动到/src/main/webapp中
顺便说一句,以下是spring文档推荐的方法:
嗨这是标准的专业行为,也是很多人毫无异议地使用的行为。你为什么喜欢在WEB-INF中使用它
不管怎样,如果你想把它放在那里,你可以把它放在
src/main/webapp/WEB-INF
什么是标准方式?我以为maven只是惯例,我没有改变任何东西,好吧。我想第二个问题是如何让maven将src/main/resources复制到/WEB-INF@NimChimpsky我补充了一些细节。如果足够的话,我会查一查(我想我错过了听众)。您不想将src/main/resources复制到/WEB-INF。因为您的spring配置不属于那里。我建议您将它放在/WEB-INF/spring/@NimChimpsky中,这样,现在它就完成了。好了,现在我得到了spring-servlet.xml的相同结果:-(,但那是因为我应该将该文件保存在根/WEB-INF中?@NimChimpsky您可以在applicationContext.xml中包含其他上下文xml文件,语法为
路径是相对于applicationContext.xmllol的位置的,我并不介意它在哪里。但是我将它从webapp/WEB-INF移动到src/main/resources,如下所示它更有意义,而且是惯例,这导致了我的部署失败。是的,src/main/resources
是通常的位置:)好的,现在我对spring-servlet.xml也有了相同的理解:-(,但那是因为我应该将该文件保存在根/WEB-INF中?好吧,我将所有配置文件放在src/main/resources
中。在这种情况下,您可以在WEB.xml中设置正确的位置:您必须在DispatcherServlet
中设置contextConfigLocation
参数。
+src
+---main
+---+---java
+---+---webapp
+---+------WEB-INF
<!-- list of the configuration files to load -->
<context-param>
<!-- Spring -->
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:applicationContext.xml</param-value>
</context-param>