2014-11-21 69 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

相關問題