Comment charger un fichier xml de configuration avec FileInputStream, mais obtenir un FileNotFoundException

StackOverflow https://stackoverflow.com/questions/2211991

Question

Mon chemin de compilation dans Eclipse ressemble à ceci:

ProjectName
   -- WEB-INF
      -- classes
         -- myClass.class
      -- configs
         -- myConfig.xml

Mon chemin absolu à la configuration ressemble actuellement à ceci:

C: \ Développement \ Java \ ProjectName \ WEB-INF \ configs \ myConfig.xml

J'utilise JAXB pour la liaison, et il attend un FileInputStream. Le FileInputStream doit être un cours d'eau pour le fichier de configuration XML. Cependant, je ne peux pas comprendre comment obtenir le FileInputStream pour ma config, et je continue à recevoir un FileNotFoundException.

Je veux que cette configuration à charger de telle sorte que quelqu'un n'a pas à coder en dur le chemin vers la config parce que je prévois de libérer le projet open source. Je vois beaucoup d'exemples où quelqu'un juste le hardcodes chemin absolu, mais je besoin d'être quelque chose de plus souple « comme » ceci:

new FileInputStream ( "/ WEB-INF / configs / myConfig.xml");

Merci!

Était-ce utile?

La solution

Je recommande de mettre ce myConfig.xml dans le répertoire WEB-INF / classes au lieu et le charger via le chargeur de classe, car il est dans le classpath. Appel getResourceAsStream () sur le contexte de servlet renvoie un InputStream que vous pouvez utiliser. Il est relatif à la racine de contexte, de sorte que vous pouvez ramasser que la guerre et le mettre partout -. Votre code fonctionne toujours

Autres conseils

Vous pouvez obtenir le flux d'entrée des chemins relatifs sous WEB-INF assez facilement avec la méthode ServletContext.getResourceAsStream() (javadoc noreferrer ) et ses variantes.

Par exemple, dans votre code selvlet vous pouvez faire ceci:

getServletContext().getResourceAsStream("/WEB-INF/configs/myConfig.xml") // your file
getServletContext().getResource("/WEB-INF") // URL to WEB-INF dir
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top