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