我有这段代码:
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
值始终为空。
我刚试过重建项目,我正在使用IntelliJ IDEA。我在这里做错了什么?
答案 0 :(得分:32)
您有三种选择:
利用当前包的相对路径(Test.class
为):
getClass.getResource("test.fxml")
您可以使用绝对路径:
getClass.getResource("/com/mysite/main/test.fxml")
或加载ClassLoader
(请注意,它始终从root开始):
getClass.getClassLoader.getResource("com/mysite/main/test.fxml")
在IntelliJ IDEA中,请确保已将;?*.fxml
添加到:
Settings
(Mac上为Preferences
)| Compiler
| 资源模式。
答案 1 :(得分:3)
可能它没有从src /目录复制到bin /目录? 这在重新编译时会发生,但如果在编译完程序后将其放入src /目录中,则IDE将无法知道。
答案 2 :(得分:2)
迟到的答案,但我遇到了同样的问题。根本原因是我的settings.gradle中的rootProject.name条目不正确。一旦我修复了,清理并重建了我的资源就可以使用getClass()。getResource()加载。希望这有助于某人。
答案 3 :(得分:0)
如果它不起作用,则可以尝试使用 ClassLoader :
ClassLoader.getSystemResource("filename").getPath
文件名应位于同一目录层