Мой код (Java) читает изображение из jar:
Main.class.getResourceAsStream("/res/logo.png")
Все работает нормально (если я запустил приложение после его упаковки в банку). Но когда я запускаю его с помощью задачи sbt run
, он возвращает мне null
вместо необходимого потока.
Запуск этого из sbt console
также дает null:
getClass.getResourceAsStream("/res/logo.png")
Есть ли способ сказать sbt разместить мои ресурсы в пути к классам?
EDIT:
Я устанавливаю dir ресурсов как те же, что и исходный dir:
build.sbt:
resourceDirectory <<= baseDirectory { _ / "src" }
Когда я загрузил sbt `console 'и выполнил следующее:
classOf[Main].getProtectionDomain().getCodeSource()
Я получил расположение своих классов, но не содержит ни папки res
, ни каких-либо моих файлов ресурсов.
Кажется, что sbt копирует ресурсы только в полученную банку и не копирует их в классы dir. Должен ли я изменить задачу компиляции, чтобы переместить эти файлы ресурсов в классы dir?
EDIT2:
Да, когда я вручную копирую файл ресурсов в каталог dir, я могу легко получить доступ к нему с консоли. Итак, как мне автоматизировать этот процесс?
EDIT3:
Кажется, что sbt просто не может увидеть мою папку ресурсов - она не добавляет файлы в полученный файл jar, фактически!
Решение:
resourceDirectory in Compile <<= baseDirectory { _ / "src" }