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