Não foi possível abrir o recurso ServletContext

Esta é uma questão bastante semelhante a um mais antigo, mas a solução não funcionou para mim.

Eu tenho um pacote WAR.

Em web.xml

  contextConfigLocation classpath:application-context.xml    org.springframework.web.context.ContextLoaderListener   

Em application-context.xml

   classpath:social.properties   

Mas conseguindo isso:

org.springframework.beans.factory.BeanInitializationException: Não foi possível carregar as propriedades; exceção aninhada é java.io.FileNotFoundException: Não foi possível abrir o recurso ServletContext [/social.properties]

Verifiquei o pacote WAR – os arquivos .xml e .properties estão em /WEB-INF/classs

.properties arquivo .properties está em src/main/resources e .xml em src/main/java (no pacote padrão ambos) e maven os transporta (acho) corretamente no pacote padrão de WEB-INF/classs

Alguém sabe porque eu poderia obter essa exceção? Obrigado.

EDIT: Eu só quero adicionar que testes JUnit vai corretamente (quero dizer que eles carregam o que deveriam de social.properties ), mas ao executar o aplicativo, ele ignora o meu classpath: prefixo

Não use classpath. Isso pode causar problemas com diferentes ClassLoaders (contêiner versus aplicativo). WEB-INF é sempre a melhor escolha.

  contextConfigLocation /WEB-INF/spring-config.xml  

e

   /WEB-INF/social.properties   

Coloque as coisas como /src/main/resources/foo/bar.properties e, em seguida, referencie-as como classpath:/foo/bar.properties .

Tente usar o prefixo classpath*: prefixo.

http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/resources.html#resources-classpath-wildcards

Além disso, tente implantar guerra explodida para garantir que todos os arquivos estejam lá.

Eu acho que atualmente o arquivo application-context.xml está em src / main / resources E o arquivo social.properties está em src / main / java … assim quando você empacota (pacote mvn) ou quando você executa o tomcat (mvn tomcat: run) seu social.properties desapareceu (eu sei que você disse quando você verificou no .war os arquivos estão aqui … mas sua exceção diz o contrário).

A solução é simplesmente colocar todos os seus arquivos de configuração (application-context.xml e social.properties) em src / main / resources para seguir a estrutura padrão do maven.

Você está tendo o Tomcat descompactar o arquivo WAR? Parece que os arquivos não podem ser encontrados no caminho de class quando um arquivo WAR é carregado e não está sendo descompactado.

tente com este código …

      /social.properties    

Marque o arquivo de propriedade em “/ WEB-INF / classs” tente usar

   /WEB-INF/classs/social.properties