2011-05-02 6 views
1

J'utilise classpathresource pour obtenir la ressource d'un fichier. Dans mon code, je spécifie le chemin pour que le fichier soit choisi à partir de là. Mais c'est prendre un fichier avec le même nom qui est déjà là dans un pot de précédent.Spécification d'un fichier dans une ressource de chemin de classe

-à-dire, Je spécifié,

ClassPathResource resource = new ClassPathResource("/sw/merlot/config/log4j.xml") 

log4j.xml est le fichier de configuration.

Mais sa prise un log4j.xml qui est dans un bocal - sw/merlot/lib/keyManager.jar!/log4j.xml

(deux log4j.xml sont différents [2 différents fichiers de configuration])

donc je l'ai changé,

ClassPathResource resource = new ClassPathResource("file:///sw/merlot/config/log4j.xml") 

Mais ça ne marche toujours pas.

Je ne sais pas si la façon dont j'ai spécifié le fichier est correcte ou non? J'ai également essayé de spécifier le fichier en utilisant un pot.

ClassPathResource resource = new ClassPathResource("jar:file:///sw/merlot/lib/keyManager111.jar!/log4j.xml") 

keyManager111.jar contient mon log4j.xml que je veux. Mais ce n'est toujours pas en train de choisir dans le pot. Son fichier révélateur n'est pas trouvé à l'emplacement spécifié.

+0

Juste créer un 'ClassPathResource' ne fait rien lui-même. Que faites-vous avec ça? – skaffman

+0

Récupère la ressource pour le fichier spécifié et l'utilise comme inputtream pour un autre processus. – indira

+3

Je voudrais essayer de revenir en arrière, et supprimer log4j.xml de la bibliothèque. En règle générale, aucune bibliothèque ne doit inclure de configuration de journalisation, c'est la responsabilité du client. (Je suppose que vous possédez KeyManager.jar) – Augusto

Répondre

2

Qu'en est-:

ClassPathResource resource = new ClassPathResource("classpath:/sw/merlot/config/log4j.xml"); 

ou si elle est dans un fichier jar différent:

ClassPathResource resource = new ClassPathResource("classpath*:/sw/merlot/config/log4j.xml"); 
Questions connexes