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. Что я здесь делаю неправильно?
Ответы
Ответ 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(). Надеюсь, это поможет кому-то.