2009-07-07 5 views
8

Desidero utilizzare ClassLoader per caricare un file di proprietà per la classe Proprietà. Ho semplificato il codice qui sotto per rimuovere la gestione degli errori per gli scopi di questa discussione:Come si utilizza Java ClassLoader per caricare un file dal classpath?

loader = this.getClass().getClassLoader(); 
in = loader.getResourceAsStream("theta.properties"); 
result = new Properties(); 
result.load(in); 

Nella stessa directory questa classe ho il file "theta.properties" ma l'InputStream è sempre nullo. Sto mettendo il file nel posto sbagliato? Sto usando eclipse e il suo set per creare i file di classe nella cartella di origine, quindi non dovrebbe essere questo il problema.

Non riesco a trovare nulla nel JavaDoc per far sì che ClassLoader indichi quale percorso di classe viene cercato.

risposta

10

Utilizzando getClass().getClassloader() cercate "theta.properties" dalla directory percorso root. Basta usare getClass().getResourceAsStream() per ottenere una risorsa relativa a quella classe.

6

Se il file si trova nella stessa directory della classe, è necessario aggiungere il prefisso al pacchetto della classe come directory.

Così, se il pacchetto è:

package com.foo.bar; 

Allora il tuo codice è:

.getResourceAsStream("com/foo/bar/theta.properties"); 
-1

È possibile utilizzare ResourceBundle