Kodum (Java) kavanozdan bir görüntü okur: (Ben bir kavanoza içine paketleme sonra uygulamayı başlatırsanız)Uygulama çalıştırırken kaynakları yüklemek için sbt nasıl yapılandırılır?
Main.class.getResourceAsStream("/res/logo.png")
Her şey iyi çalışır. Ancak, sbt'nin run
görevini kullanarak çalıştırdığımda, gerekli akış yerine null
döndürür.
sbt console
bu Koşu da boş veriyor: üzerinde sınıf Kaynaklarımı koymak SBT anlamanın bir yolu
getClass.getResourceAsStream("/res/logo.png")
var mı?
DÜZENLEME:
Ben kaynak dir aynı olacak şekilde kaynaklar dir ayarlayın:build.sbt:
resourceDirectory <<= baseDirectory { _/"src" }
Ben SBT en `konsol yüklenen' ve aşağıdaki bitince:
classOf[Main].getProtectionDomain().getCodeSource()
aldım sınıflarımın yeri değil, ne res
klasörünü ne de kaynak dosyamdan herhangi birini içermiyor.
Bu, kaynakların yalnızca sonuçta oluşan jar'e kopyalar ve bunları sınıflar dizinine kopyalamaz. Bu kaynak dosyalarını sınıf dizinlerine taşımak için derleme görevi değiştirmeli miyim?
EDIT2: manuel sınıflar dir kaynak dosyası kopyalarken
Evet, ben kolayca konsoldan erişebilirsiniz. Peki, bu süreci nasıl otomatikleştirmeliyim?
EDIT3:
sbt benim kaynak klasörü görmek için sadece yapamaz gibi görünüyor - aslında, kavanoz dosyası çıkan dosya eklemek değildir!
Çözüm:
resourceDirectory in Compile <<= baseDirectory { _/"src" }
'getResourceAsStream bu şekilde deneyin sbt 'run ',' konsol 've' test 'sorun olmaksızın. Belki biraz daha detaylar yardımcı olur. Sbt'nin hangi versiyonu? Dosya nerede bulunur (başka bir .jar veya 'src/main/resources' veya diğer)? Herhangi bir kaynakla ilgili eklentiniz veya yapılandırmanız var mı? – leedm777
Sbt - en son sürüm, bugün indirildi (0.11.2, Sanırım). Dosya src/res/logo.png'de bulunur. Ve ekledi "resourceDirectory << = baseDirectory {_ /" src "}" to build.sbt – Rogach
Sözleşmeyi izlerseniz ve kaynağı "src/main/resources" içine alırsanız ne olur? – leedm777