@PropertySource dans un Bocal pour un fichier externe dans le classpath

Je suis en train d'utiliser le framework Spring est @PropertySource annotation dans un Bocal pour charger un fichier de propriétés de l'extérieur du pot, mais il n'est pas de trouver le fichier.

J'ai besoin d'un fichier de propriétés à l'extérieur du Pot afin de pouvoir le modifier. Je ne sais pas l'emplacement exact où le fichier sera, j'ai pensé que je pouvais avoir juste n'importe où sur le chemin de la classe.

Je suis en utilisant l'annotation suivante sur mon Config classe.

@PropertySource('classpath:stc.properties')

Et placé stc.properties dans le même répertoire que la fichier Jar. J'ai essayé en spécifiant le chemin de la classe de manière explicite dans le java de commande, mais il ne trouve pas le fichier:

java -cp . -jar stc.jar
Exception in thread "main" org.springframework.beans.factory.BeanDefinitionStoreException: Failed to load bean class: com.example.stc.Config; nested exception is java.io.FileNotFoundException: class path resource [stc.properties] cannot be opened because it does not exist
        at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:162)
        at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:299)
        at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:243)
        at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:254)
        at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:94)
        at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:609)
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:464)
[...]

Etc.

J'ai aussi essayé d'utiliser ./ que le chemin de la classe, et j'ai essayé en spécifiant le chemin de la classe (avec les deux variantes) dans le Class-Path attribut du pot est manifeste, mais il donne toujours les mêmes résultats.

OriginalL'auteur brianmearns | 2015-05-06