切换到Java 1.8-Spring 4后无法打开ServletContext资源[/jdbc.properties]

时间:2014-11-21 19:12:45

标签: java spring maven spring-mvc

我有两个Spring项目,Backend和Frontend。后端的升级没有问题(Spring 4.1.2.RELEASE)。在部署前端时我有这个例外:

org.springframework.beans.factory.BeanDefinitionStoreException: Failed to process import candidates for configuration class [acn.spring.config.AppConfig]; nested exception is java.io.FileNotFoundException: Could not open ServletContext resource [/jdbc.properties]
    at org.springframework.context.annotation.ConfigurationClassParser.processImports(ConfigurationClassParser.java:489)
....
Caused by: 
java.io.FileNotFoundException: Could not open ServletContext resource [/jdbc.properties]

这是前端的WebAppInitializer:

@Configuration
public class WebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {

    @Override
    protected Class<?>[] getRootConfigClasses() {
        return new Class<?>[] { AppConfig.class };
    }
    .....

Appconfig位于后端项目中,如下所示:

@Import(DataConfig.class)
@Configuration
public class AppConfig {
   ...
}

缺少的属性文件用于DataConfig,在此处导入:

@PropertySource("jdbc.properties")
@Configuration
public class DataConfig {
   ...
}

为什么无法找到属性文件?

编辑:后端的Jar结构:

  • META-INF
    • MANIFEST.MF
    • 行家
  • mySourcePackages结构
  • jdbc.properties

前端的战争结构:

  • META-INF
    • MANIFEST.MF
    • 行家
  • 资源
  • WEB-INF
      • mySourcePackages结构
    • JS​​P
    • LIB
      • 所有的罐子,包括backend.jar

2 个答案:

答案 0 :(得分:9)

告诉配置类您的属性在类路径中。否则,它将默认查看Servlet上下文,因为它是一个Web上下文。

@PropertySource("classpath:jdbc.properties")

答案 1 :(得分:0)

检查jdbc.properties是否在类路径的根目录中。如果这不是问题,我需要更多关于您的问题的详细信息,例如您的文件夹结构以及编译打包到战争。