Путь к файлу getResourceAsStream во время работы .jar
Мой код:
BufferedInputStream bis =
new BufferedInputStream(getClass().getResourceAsStream("playerhit.mp3"));
Этот код отлично работает, когда файл playerhit.mp3
находится в том же пакете, что и в MP3.class
, в котором он запущен. Я запускаю это как .jar. Если, хотя я меняю путь к файлу на что-то вроде /src/data/audio/playerhit.mp3
, он больше не работает. Есть ли в любом случае доступ к другому пути к файлу, чем root из пакета, при запуске как .jar?
Ответы
Ответ 1
Взгляните на Javadoc для getResourceAsStream(...)
.
Если аргумент начинается с /
, то абсолютное имя ресурса - это часть имени, следующего за /
. В противном случае абсолютное имя имеет следующий вид:
modified_package_name/name
Где modified_package_name
- это имя пакета этого объекта с /
, замененным на .
.
Итак, если ваш playerhit.mp3
находится в корне вашей структуры пакета, вы должны ссылаться на него как /playerhit.mp3
. Если он находится в /src/data/audio/
, вы, вероятно, должны использовать /data/audio/playerhit.mp3
- но проверьте содержимое вашего JAR файла.
Ответ 2
Сначала проверьте, действительно ли файл находится в банке.
Проверьте местоположение внутри банки.
Относительный путь: текущий пакет
Абсолютный путь: корень jar