27

我有这个代码:

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.scalaurl值始终为空。

我刚刚尝试重建项目,我正在使用 IntelliJ IDEA。我在这里做错了什么?

4

4 回答 4

39

你有三个选择:

  • 利用当前包的相对路径(在哪里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到:

SettingsPreferences在 Mac 上)| Compiler| 资源模式

于 2012-08-26T20:28:27.813 回答
5

可能它没有从 src/ 目录复制到 bin/ 目录?这发生在重新编译时,但如果在程序编译后将其放入 src/ 目录,IDE 将不知道。

于 2013-11-04T20:12:30.557 回答
2

迟到的答案,但我也遇到了同样的问题。根本原因是我的 settings.gradle 中的 rootProject.name 条目不正确。一旦我修复了这个问题,清理并重建了我的资源,就可以使用 getClass().getResource() 加载。希望这可以帮助某人。

于 2015-05-14T02:44:45.207 回答
0

如果它不起作用,您可以尝试使用ClassLoader

ClassLoader.getSystemResource("filename").getPath

文件名应在同一目录层

于 2020-11-21T09:15:56.027 回答