Mi sono confuso da getResourceAsStream()
;Dove getResourceAsStream (file) cerca il file?
mia struttura del pacchetto si presenta come:
\src
|__ net.floodlightcontroller // invoked getResourceAsStream() here
|__ ...
|__ resources
|__ floodlightdefault.properties //target
|__ ...
E voglio leggere da floodlightdefault.properties. Ecco il mio codice, che giace nel pacchetto net.floodlightcontroller
:
package net.floodlightcontroller.core.module;
// ...
InputStream is = this.getClass().getClassLoader()
.getResourceAsStream("floodlightdefault.properties");
Ma non è riuscito, ottenendo is == null
. Quindi mi chiedo come esattamente getResourceAsStream(file)
cerchi il file
. Voglio dire funziona attraverso determinati PATH
s o in un certo ordine?
Se sì, come configurare le posizioni che cerca getResourceAsStream()
?
Thx!
Hai aggiunto la directory delle risorse in un classpath durante l'esecuzione del codice? In generale, il comportamento di getResourceAsStream dipende dall'implementazione di ClassLoader. –
In generale dipenderà anche da cosa "questo" si riferisce. – Radiodef
Per risolvere il problema con null, ci sono due cose che vedo inizialmente. Per prima cosa, sembra che tu debba solo cambiare la tua directory in "risorse/floodlightdefault.properties". In secondo luogo, il metodo potrebbe cercare la risorsa all'interno della directory di build e la struttura di directory che hai mostrato sembra essere la cartella di origine del progetto IDE. Anche se ovviamente hai aggiunto le risorse al progetto, l'IDE dovrebbe copiare automaticamente i file nella directory di costruzione. In un test rapido con Netbeans, le mie risorse escono null se le rimuovo da _both_ la build e la cartella src. – Radiodef