Estou carregando um arquivo de texto de dentro de um pacote em um JAR compilado do meu projeto Java. A estrutura de diretórios relevante é a seguinte:
/src/initialization/Lifepaths.txt
Meu código carrega um arquivo chamando Class::getResourceAsStreampara retornar 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();}
}
A impressão sempre será impressa null, não importa o que eu use. Não sei por que o que foi dito acima não funcionaria, então também tentei:
"/src/initialization/Lifepaths.txt""initialization/Lifepaths.txt""Lifepaths.txt"
Nenhum desses trabalhos. Eu li várias perguntas até agora sobre o tópico, mas nenhuma delas foi útil - geralmente, elas dizem apenas para carregar arquivos usando o caminho raiz, o que eu já estou fazendo. Isso, ou apenas carregue o arquivo do diretório atual (apenas carregue filename), o que eu também tentei. O arquivo está sendo compilado no JAR no local apropriado com o nome apropriado.
Como eu resolvo isso?
Lifepaths.class. Dito isto, por que getClassLoader()permite que funcione? (Além disso, sinta-se livre para postar uma resposta!)
Lifepaths.getClass()? Não existe esse método estático definido em Object ... #
getResource(String). BTW - Eu sempre tive problemas para fazer com que qualquer um trabalhasse em um staticcontexto. O problema é basicamente que o carregador de classes obtido é o destinado às classes J2SE. Você precisa obter acesso ao carregador de classes de contexto destinado ao próprio aplicativo.
.