web-dev-qa-db-ja.com

Scala getClass.getResource()がnullを返す

私はこのコードを持っています:

val url: URL = getClass.getResource("com/mysite/main/test.fxml")

そして常にnull(またはUnit)を返します。プロジェクトには2つのファイルしかありません。

MyProj/src/com/mysite/main/Test.scala
MyProj/src/com/mysite/main/test.fxml

Test.scalaを実行すると、urlの値は常にnullになります。

私はちょうどプロジェクトを再構築しようとしました、私はIntelliJ IDEAを使用しています。ここで何が悪いのですか?

23
Tower

次の3つのオプションがあります。

  • 現在のパッケージへの相対パスを利用します(ここでTest.class is):

    getClass.getResource("test.fxml")
    
  • 絶対パスを使用できます:

    getClass.getResource("/com/mysite/main/test.fxml")
    
  • またはClassLoaderからロードします(常にルートから始まることに注意してください):

    getClass.getClassLoader.getResource("com/mysite/main/test.fxml")
    

IntelliJ IDEAで、;?*.fxmlへ:

Settings(MacではPreferences)| Compiler | リソースパターン

33

おそらくそれはsrc /ディレクトリからbin /ディレクトリにコピーされていませんか?これは再コンパイル時に発生しますが、プログラムがすでにコンパイルされた後でsrc /ディレクトリにドロップすると、IDEはわかりません。

3
ConorR

遅い答えですが、私はこれと同じ問題を抱えていました。根本的な原因は、settings.gradleの不正なrootProject.nameエントリでした。それを修正し、クリーンアップして再構築すると、getClass()。getResource()を使用してリソースをロードできました。うまくいけば、それは誰かを助けます。

2
cory.todd