Подтвердить что ты не робот

Scala getClass.getResource() возвращает null

У меня есть этот код:

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

и он всегда возвращает null (или Unit). У меня есть только два файла в проекте:

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

и когда я запускаю Test.scala, значение url всегда равно null.

Я просто попытался перестроить проект, я использую IntelliJ IDEA. Что я здесь делаю неправильно?

4b9b3361

Ответ 1

У вас есть три варианта:

  • используйте относительный путь к вашему текущему пакету (где Test.class):

    getClass.getResource("test.fxml")
    
  • вы можете использовать абсолютный путь:

    getClass.getResource("/com/mysite/main/test.fxml")
    
  • или загрузите через ClassLoader (обратите внимание, что он всегда начинается с корня):

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

В IntelliJ IDEA убедитесь, что вы добавили ;?*.fxml в:

Settings (Preferences на Mac) | Compiler | Шаблоны ресурсов.

Ответ 2

Возможно, он не копируется в каталог bin/из каталога src/? Это происходит при перекомпиляции, но если вы поместите его в каталог src/после того, как программа уже скомпилирована, среда IDE не будет знать.

Ответ 3

Поздний ответ, но у меня была такая же проблема. Коренной причиной была некорректная запись rootProject.name в моих настройках .gradle. Как только я исправил это, очистил и перестроил мой ресурс, смог загрузить с помощью getClass(). GetResource(). Надеюсь, это поможет кому-то.