Sto caricando un file di testo all'interno di un pacchetto in un JAR compilato del mio progetto Java. La struttura di directory pertinente è la seguente:
/src/initialization/Lifepaths.txt
Il mio codice carica un file chiamando Class::getResourceAsStreamper restituire a InputStream.
public class Lifepaths {
public static void execute() {
System.out.println(Lifepaths.class.getClass().
getResourceAsStream("/initialization/Lifepaths.txt"));
}
private Lifepaths() {}
//This is temporary; will eventually be called from outside
public static void main(String[] args) {execute();}
}
La stampa verrà sempre stampata null, indipendentemente da ciò che uso. Non sono sicuro del motivo per cui quanto sopra non funzionerebbe, quindi ho anche provato:
"/src/initialization/Lifepaths.txt""initialization/Lifepaths.txt""Lifepaths.txt"
Nessuno di questi lavori. Finora ho letto numerose domande sull'argomento, ma nessuna di queste è stata utile - di solito, dicono solo di caricare i file usando il percorso di root, che sto già facendo. Quello, o semplicemente caricare il file dalla directory corrente (basta caricare filename), che ho anche provato. Il file viene compilato nel JAR nella posizione appropriata con il nome appropriato.
Come lo risolvo?
Lifepaths.class. Detto questo, perché gli getClassLoader()consente di funzionare? (Inoltre, sentiti libero di inviare una risposta!)
Lifepaths.getClass()? Non esiste un metodo statico definito nell'Oggetto ...
getResource(String). A proposito, ho sempre avuto problemi a far funzionare uno di questi in un staticcontesto. Il problema è fondamentalmente che il caricatore di classi ottenuto è quello inteso per le classi J2SE. È necessario accedere al programma di caricamento della classe di contesto che è destinato all'applicazione stessa.
.