无法打开Eclipse JEE: applicationContext.xml中的Spring/Maven项目



收到Spring/Maven项目后,我:

  • 运行mvn eclipse:eclipse
  • 加载到Eclipse JEE(最新版本,叫做Neon),
  • 添加Dynamic Web Module面,
  • 点击运行Jetty。

问题:它没有找到自己的applicationContext.xml,即使它存在于src/main/webapp/WEB-INF/classes/applicationContext.xml

16:58:58.183 [main] ERROR org.springframework.web.context.ContextLoader - Context initialization failed
org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [applicationContext.xml]; nested exception is java.io.FileNotFoundException: class path resource [applicationContext.xml] cannot be opened because it does not exist

问题:我如何告诉Eclipse JEE applicationContext.xml在哪里,或者解决这个问题?

WEB-INF/classes是Maven war插件在构建war时创建的目录,它不应该是一个项目文件夹。Maven war插件会为任何war项目创建它,这样它就可以把你的src/main/javasrc/main/resources文件夹中的编译类和资源放在那里,按照标准的Maven约定。

同样,WEB-INF/lib是由war插件自动创建的,并填充了war模块的依赖项,这些依赖项没有提供的范围。

所以把文件(以及你现在在src/main/webapp/classes中的任何其他文件)放在war模块的src/main/resources文件夹中,它应该像预期的那样工作。

旁注:这只适用于lib子目录;在你的项目中有一个WEB-INF文件夹是完全有效的,这样你就可以在WEB-INF中添加文件(比如:web.xml)。

最新更新