Mi código (Java) lee una imagen del tarro:¿Cómo configurar sbt para cargar recursos cuando se ejecuta la aplicación?
Main.class.getResourceAsStream("/res/logo.png")
Todo funciona muy bien (si comienzo a la aplicación después del envasado en un frasco). Pero cuando lo ejecuto usando la tarea de sbt run
, me devuelve null
en lugar de la transmisión necesaria.
Correr esto desde SBT console
también da nulo:
getClass.getResourceAsStream("/res/logo.png")
¿Hay una manera de contar SBT para poner mis recursos en la ruta de clase?
EDIT:
puse el directorio de recursos a ser la misma que la fuente dir:
build.sbt:
resourceDirectory <<= baseDirectory { _/"src" }
Cuando cargué `consola de SBT' y encontré lo siguiente:
classOf[Main].getProtectionDomain().getCodeSource()
llegué la ubicación de mis clases, pero no contiene ni la carpeta res
ni ninguno de mis archivos de recursos.
Parece que sbt copia recursos solo en el jar resultante y no los copia en las clases dir. ¿Debo modificar la tarea de compilación para mover estos archivos de recursos a las clases dir?
Edit2:
Sí, cuando copio manualmente el archivo de recursos a las clases dir, puedo fácilmente acceder a él desde la consola. Entonces, ¿cómo debo automatizar este proceso?
Edit3:
Parece que SBT es incapaz de ver a mi carpeta de recursos - no se le añade a los archivos resultantes archivo jar, en realidad!
Solución:
resourceDirectory in Compile <<= baseDirectory { _/"src" }
utilizo 'getResourceAsStream 'from sbt's' run', 'console' y' test' sin problema. Tal vez algunos detalles más ayudarían. ¿Qué versión de sbt? ¿Dónde se encuentra el archivo (en otro .jar, o 'src/main/resources', u otro)? ¿Tiene algún complemento o configuración relacionada con los recursos? – leedm777
Sbt - última versión, descargada hoy (0.11.2, creo). El archivo se encuentra en src/res/logo.png. Y agregué "resourceDirectory << = baseDirectory {_ /" src "}" a build.sbt – Rogach
¿Qué sucede si sigues la convención y colocas el recurso en 'src/main/resources'? – leedm777