Come caricare un file di configurazione XML con FileInputStream, ma ottenendo un FileNotFoundException

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

Domanda

Il mio percorso di generazione in Eclipse si presenta così:

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

Il mio percorso assoluto per la configurazione attualmente si presenta così:

C: \ Sviluppo \ Java \ ProjectName \ WEB-INF \ configs \ myConfig.xml

Sto usando JAXB per il legame, e si aspetta un FileInputStream. Il FileInputStream deve essere un flusso per il file di configurazione XML. Tuttavia, non riesco a capire come ottenere il FileInputStream per il mio config, e io continuo a ricevere un FileNotFoundException.

Voglio che questa configurazione da caricare in modo tale che qualcuno non ha bisogno di codificare il percorso per la configurazione, perché ho intenzione di rilasciare il progetto open source. Vedo un sacco di esempi in cui qualcuno solo codifica il percorso assoluto completo, ma ho bisogno di essere qualcosa di più flessibile "come" in questo modo:

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

Grazie!

È stato utile?

Soluzione

Mi consiglia di mettere che myConfig.xml nella directory WEB-INF / classes invece e il caricamento tramite il caricatore di classe, dal momento che è nel classpath. Chiamata getResourceAsStream () del contesto servlet restituirà un InputStream che è possibile utilizzare. E 'relativo alla root del contesto, in modo da poter raccogliere che la guerra e mettere da nessuna parte -. Il codice continuerà a funzionare

Altri suggerimenti

È possibile ottenere il flusso di input di percorsi relativi sotto WEB-INF abbastanza facilmente con il metodo ServletContext.getResourceAsStream() (javadoc noreferrer qui ) e le sue varianti.

Ad esempio, nel codice selvlet si può fare questo:

getServletContext().getResourceAsStream("/WEB-INF/configs/myConfig.xml") // your file
getServletContext().getResource("/WEB-INF") // URL to WEB-INF dir
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top