Scala getClass.getResource()返回null

时间:2012-08-26 20:26:25

标签: java scala intellij-idea

我有这段代码:

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。我在这里做错了什么?

4 个答案:

答案 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

文件名应位于同一目录层