Vorrei portare un file xml dal mio classpath a unmarshal e usarlo a scopo di test. Il mio problema è di averlo come InputStream. Ho scritto queste righe ma ottengo sempre un risultato nullo.carica un file (xml) dal classpath in un'app web di primavera
InputStream is = getClass().getResourceAsStream("WebContent/WEB-INF/classes/testing/"+ COMPLETE_DOCUMENT + ".xml");
ovviamente il percorso che vedi nell'argomento metodo è quello del mio file. Ho provato diverse combinazioni:
WebContent/WEB-INF/classes/testing/
classpath:testing/
classpath*:testing/
ma ho sempre ottenere l'InputStream = null.
Ho anche cercato di passare a
ClassLoader.getResourceAsStream(...)
ma non succede nulla. Suppongo che il percorso verso la risorsa sia in qualche modo sbagliato, ma non riesco a capire dove. Dal mio servlet.xml Faccio uso di alcune risorse nel classpath configurazione PropertyPlaceholderConfigurer o Jaxb2Marshaller solo con la sintassi
"classpath:folder/file.xsd"
e funziona perfettamente. La cartella che voglio caricare il mio xml da è un fratello di quello nell'esempio sopra. Cosa mi manca?
EDIT: cerco di seguire l'approccio classe helper primavera ClassPathResource e ottengo uno strano comportamento: come ho detto prima ho già alcune risorse caricate dal classpath da alcuni fagioli di primavera all'avvio. Se uso il percorso di tali risorse nel codice suggerito da Dardo nel modo seguente:
ClassPathResource cpr = new ClassPathResource("xmlschemas/lrinode.xsd");
InputStream is = cpr.getInputStream();
ho ancora ottenere un FileNotFound Exception
! Ovviamente "xmlschemas/lrinode.xsd"
è un xsd che carico all'avvio con successo. Non funziona anche se utilizzo il percorso completo della risorsa, a partire dalla radice dell'applicazione.
Sto iniziando a pensare che mi manca qualcosa di banale.
grazie, sono interessato a questa classe di supporto. Ho provato la tua soluzione ma ottengo ancora '" java.io.FileNotFoundException: risorsa percorso classe [testing/sample_complete_document.xml] non può essere aperto perché non esiste " eccezione. Il nome del file è il nome effettivo del file nel mio classpath. PS. Utilizzo già JAXB2^__^ – MaVVamaldo
Qual è il percorso completo se il documento xml – dardo
il percorso completo del documento xml è il seguente: '/ VirtualResource2/WebContent/WEB-INF/classes/testing/sample_complete_document.xml'. Naturalmente "VirtualResource2" è il nome della mia applicazione web. – MaVVamaldo