2014-11-21 67 views
-1

我有两个Spring项目,后端和前端。后端的升级没有问题(Spring 4.1.2.RELEASE)。虽然部署前端我有这样的例外:切换到Java 1.8后,无法打开ServletContext资源[/jdbc.properties] - Spring 4

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 { 
    ... 
} 

为什么找不到属性文件?

编辑:后端的罐结构:

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

前端的战争结构:

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

回答

6

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

@PropertySource("classpath:jdbc.properties") 
+0

非常感谢! – akcasoy 2014-11-21 20:04:01

0

检查jdbc.properties是在类路径的根。如果这不是问题,我需要更多关于你的问题的细节,比如什么是你的文件夹结构,以及如果你编译打包成一场战争。

+0

jdbc.properties位于后端的根目录(直接在资源下)。它可以在后端读取。它可以从前端读取此前升级..当我打包前端,战争包括3个文件夹META-INF(MANIFEST.MF和maven文件夹,其中有pom.xml等)+资源(我的前端文件像css,js ..它们位于webapp文件夹下)+ WEB-INF(类,jsp和lib文件夹,lib包含所有包括backend.jar的jar)。当我提取后端jar时,jdbc.properties位于基本文件夹,以及META-INF等。 – akcasoy 2014-11-21 19:31:26

相关问题