read getresourceasstream from java jar inputstream filepath

java - from - getResourceAsStream filepath al ejecutar.jar



java read file from classpath (2)

Eche un vistazo al Javadoc para getResourceAsStream(...) .

Si el argumento comienza con a / , entonces el nombre absoluto del recurso es la parte del nombre que sigue a / . De lo contrario, el nombre absoluto es de la siguiente forma: modified_package_name/name Donde el modified_package_name es el nombre del paquete de este objeto con / sustituido por . .

Entonces, si tu playerhit.mp3 está en la raíz de la estructura de tu paquete, debes hacer referencia a él como /playerhit.mp3 . Si está en /src/data/audio/ , probablemente deberías usar /data/audio/playerhit.mp3 - pero revisa el contenido de tu archivo JAR para estar seguro.

Mi código:

BufferedInputStream bis = new BufferedInputStream(getClass().getResourceAsStream("playerhit.mp3"));

Este código funciona bien cuando el archivo playerhit.mp3 está en el mismo paquete que el MP3.class se está ejecutando. Lo estoy ejecutando como .jar. Si cambio la ruta del archivo a algo como /src/data/audio/playerhit.mp3 , ya no funciona. ¿Hay alguna forma de acceder a diferentes rutas de archivos que a la raíz del paquete mientras se ejecuta como .jar?


Verifique primero si el archivo está realmente en el contenedor.

Verifique la ubicación dentro del contenedor.

Ruta relativa: paquete actual

Ruta absoluta: raíz de jar