Scala getClass.getResource() returning null
Solution 1
You have three options:
take advantage of relative path to your current package (where
Test.class
is):getClass.getResource("test.fxml")
you can use absolute path:
getClass.getResource("/com/mysite/main/test.fxml")
or load through the
ClassLoader
(note that it always start from root):getClass.getClassLoader.getResource("com/mysite/main/test.fxml")
In IntelliJ IDEA, make sure you have added ;?*.fxml
to the:
Settings
(Preferences
on Mac) | Compiler
| Resource Patterns.
Solution 2
Possibly it's not being copied to the bin/ directory from the src/ directory? This happens on recompilation, but if you drop it into the src/ directory after the program is already compiled, the IDE won't know.
Solution 3
Late answer but I just had this same problem. The root cause was an incorrect rootProject.name entry in my settings.gradle. Once I fixed that, cleaned, and rebuilt my resource were able to load using getClass().getResource(). Hopefully that helps somebody.
Related videos on Youtube
Tower
Updated on November 21, 2020Comments
-
Tower over 3 years
I have this code:
val url: URL = getClass.getResource("com/mysite/main/test.fxml")
and it always returns
null
(orUnit
). I have only two files in the project:MyProj/src/com/mysite/main/Test.scala MyProj/src/com/mysite/main/test.fxml
and when I run the
Test.scala
theurl
value is always null.I just tried rebuild the project, I am using IntelliJ IDEA. What am I doing wrong here?
-
CrazyCoder over 11 yearspossible duplicate of IntelliJ: how to make non java files copied to the bin directory as well?
-
-
Tower over 11 yearsNope, the same thing, it returns null. I've googled and tried those, but none of them work either.
-
FThompson over 11 years@rFactor Try refreshing the project.
-
Tomasz Nurkiewicz over 11 years@rFactor: so it must be something with your IDE. All of the above work, at least when I am using IntelliJ and maven project structure. Also are you sure
Test.scala
has correct package declaration? The directory is not enough. -
Tower over 11 years@TomaszNurkiewicz yes the file begins with
package com.mysite.main
and everything runs fine, except that it doesn't find the file and yes the file does exist. What is "refresh"? I pressed "Synchronize" and also "Rebuild project". -
Tower over 11 yearsThe file is not copied to the "out" folder structure, although the files "Test$.class" and "Test.class" are. Is that a problem?
-
CrazyCoder over 11 years
-
grasshopper about 9 yearsthis solved my problem. I just had to to sbt clean compile and then it could see the resources. Thanks for preventing me from wasting any more time on this!