私のコード(Javaは)jarファイルから画像を読み込みます(私はjarファイルにパッケージした後にアプリを起動した場合)アプリケーションを実行しているときにリソースをロードするようにsbtを設定する方法は?
Main.class.getResourceAsStream("/res/logo.png")
すべてが正常に実行されます。しかし、sbtのrun
タスクを使用して実行すると、必要なストリームではなくnull
が返されます。 SBT console
からこれを実行する
もヌルいます:
getClass.getResourceAsStream("/res/logo.png")
は、クラスパス上に私のリソースを置くためにSBTを伝える方法はありますか?
EDIT:
私はソースディレクトリと同じになるようにリソースのディレクトリを設定します。
build.sbt:
resourceDirectory <<= baseDirectory { _/"src" }
私はSBTの `コンソール」をロードし、次のことを実行したとき:
classOf[Main].getProtectionDomain().getCodeSource()
私が得ました私のクラスの場所ですが、res
フォルダも自分のリソースファイルも含まれていません。
sbtは結果のjarファイルにのみリソースをコピーし、dirクラスにはコピーしないようです。これらのリソースファイルをクラスdirに移動するためにコンパイルタスクを変更する必要がありますか?
EDIT2:私は手動でクラスのディレクトリにリソースファイルをコピーするとき
はい、私は簡単にコンソールからアクセスすることができます。では、このプロセスをどのように自動化するべきですか?
EDIT3:
SBTは、私のリソースフォルダを見ることだけができないようだ - それは実際には、jarファイルを結果にファイルを追加しません!
ソリューション:
resourceDirectory in Compile <<= baseDirectory { _/"src" }
'sbtの' run'、 'console'、' test'からは問題なく動作します。多少の詳細が役立つかもしれません。 sbtのどのバージョン?ファイルがどこにあるか(別の.jar、 'src/main/resources'など)リソース関連のプラグインや設定はありますか? – leedm777
Sbt - 最新のバージョン、今日ダウンロード(0.11.2、私は思う)。ファイルはsrc/res/logo.pngにあります。そして、 "resourceDirectory << = baseDirectory {_ /" src "}"をbuild.sbtに追加しました – Rogach
あなたが規約に従い、リソースを 'src/main/resources'に入れるとどうなりますか? – leedm777