35 votes

Impossible d'ouvrir la ressource ServletContext

C'est assez semblable question de l'âge, mais la solution n'a pas fonctionné pour moi.

J'ai une GUERRE de package.

En web.xml

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:application-context.xml</param-value>
</context-param>

<listener>
    <listener-class>
        org.springframework.web.context.ContextLoaderListener
    </listener-class>
</listener>

En application-context.xml

<bean id="placeholderConfig" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="location">
        <value>classpath:social.properties</value>
    </property>
</bean>

Mais arriver à ceci:

org.springframework.les haricots.usine.BeanInitializationException: impossible de charger les propriétés; nested exception java.io.FileNotFoundException: impossible d'ouvrir le ServletContext de ressources [/social.propriétés]

J'ai vérifié la GUERRE paquet - .xml et .properties fichiers sont tous les deux en /WEB-INF/classes

.properties fichier se trouve dans src/main/resources et .xml en src/main/java (dans le package par défaut à la fois) et maven transporte (je pense) correctement dans le package par défaut de WEB-INF/classes

Personne ne sait pourquoi j'ai pu obtenir cette exception? Je vous remercie.

EDIT: je veux juste ajouter que JUnit tests va bien (je veux dire qu'ils se chargent de ce qu'ils doivent à partir de social.properties), mais lors de l'exécution de l'application, elle ignore mon classpath: préfixe

33voto

kromit Points 1298

N'utilisez pas classpath. Cela peut entraîner des problèmes avec différents ClassLoaders (conteneur ou application). WEB-INF est toujours le meilleur choix.

 <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/spring-config.xml</param-value>
</context-param>
 

et

 <bean id="placeholderConfig" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
     <property name="location">
         <value>/WEB-INF/social.properties</value>
     </property>
</bean>
 

15voto

pkopac Points 41

Mettez les choses comme /src/main/resources/foo/bar.properties , puis référencez-les comme classpath:/foo/bar.properties .

6voto

Ivan.Latysh Points 66

Essayez d'utiliser le préfixe classpath*: place.

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

Essayez également de déployer la guerre éclatée pour vous assurer que tous les fichiers sont là.

0voto

equesada Points 89

Je pense qu'actuellement le application-context.xml le fichier est dans le répertoire src/main/resources ET le social.fichier de propriétés est dans src/main/java... de sorte que lorsque vous créez un package (mvn package) ou lorsque vous exécutez tomcat (mvn tomcat:exécuter) vos social.propriétés disparu (je sais que vous avez dit lorsque vous avez vérifié dans l' .la guerre les fichiers sont ici... mais votre exception dit le contraire).

La solution est tout simplement de mettre tous vos fichiers de configuration (application-context.xml et sociaux.les propriétés) dans src/main/resources pour suivre le maven standard de la structure.

0voto

Demandez-vous à Tomcat de décompresser le fichier WAR? Il semble que les fichiers soient introuvables dans le chemin de classe lorsqu'un fichier WAR est chargé et qu'il n'est pas décompressé.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X