il "jar:file:" iniziale ti dice che il file si trova in un jar.
Non puoi aprire un java.io.File sul percorso di una risorsa che sta in un jar.
Sarebbe un po' come cercare di aprire un File su un indirizzo html, file ti dirà "hey, che è 'sta roba?".
Non a caso getResource risponde con un URL, che è più generale di java.io.File.
Ciò premesso, se vuoi leggere il documento bingo.xml puoi farlo senza passare da java.io.File:
URL url = getClass().getResource("/resources/properties.xml");
InputStream in = url.openStream();
o, direttamente:
InputStream in = getClass().getResourceAsStream("/resources/properties.xml");
Praticamente tutti gli strumenti che leggono qualcosa nelle librerie standard accettano un InputStream come sorgente. Per XML:
DocumentBuilderFactory fac = DocumentBuilderFactory.newInstance();
DocumentBuilder db = fac.newDocumentBuilder();
Document xmlDoc = db.load(inputStream);
Nota che puoi leggere un documento impacchettato in jar ma non puoi scriverci sopra. Il file Jar è uno Zip, se modifichi una entry cambia la tabella di compressione e lo zip va riscritto.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me!
|