Как настроить sbt для загрузки ресурсов при запуске приложения?

Мой код (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" }
11
задан Rogach 22 December 2011 в 02:30
поделиться