Estoy cargando un archivo de texto desde un paquete en un JAR compilado de mi proyecto Java. La estructura de directorio relevante es la siguiente:
/src/initialization/Lifepaths.txt
Mi código carga un archivo llamando Class::getResourceAsStream
para devolver 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 impresión siempre se imprimirá null
, no importa lo que use. No estoy seguro de por qué lo anterior no funcionaría, así que también he intentado:
"/src/initialization/Lifepaths.txt"
"initialization/Lifepaths.txt"
"Lifepaths.txt"
Ninguno de estos trabajos. Hasta ahora he leído numerosas preguntas sobre el tema, pero ninguna de ellas ha sido útil, por lo general, solo dicen que cargue archivos usando la ruta raíz, lo que ya estoy haciendo. Eso, o simplemente carga el archivo desde el directorio actual (solo carga filename
), que también he intentado. El archivo se está compilando en el JAR en la ubicación apropiada con el nombre apropiado.
¿Cómo puedo solucionar esto?
Lifepaths.class
. Dicho esto, ¿por qué getClassLoader()
permite que funcione? (¡Además, siéntase libre de publicar una respuesta!)
Lifepaths.getClass()
? No existe tal método estático definido en Object ...
getResource(String)
. Por cierto, siempre he tenido problemas para que cualquiera de los dos trabaje en un static
contexto. El problema es básicamente que el cargador de clases obtenido es el destinado a las clases J2SE. Debe obtener acceso al cargador de clases de contexto destinado a la aplicación misma.