使用getResource()获取资源

lbe*_*gni 60 java resources getresource

我需要在java项目中获取资源图像文件.我在做的是:

URL url = TestGameTable.class.getClass().
          getClassLoader().getResource("unibo.lsb.res/dice.jpg");
Run Code Online (Sandbox Code Playgroud)

目录结构如下:

unibo/
  lsb/
    res/
      dice.jpg
    test/
    ..../ /* other packages */
Run Code Online (Sandbox Code Playgroud)

事实是,我总是得到文件不存在.我尝试了很多不同的路径,但我无法解决问题.任何提示?

Boz*_*zho 110

TestGameTable.class.getResource("/unibo/lsb/res/dice.jpg");
Run Code Online (Sandbox Code Playgroud)
  • 前导斜杠表示类路径的根
  • 斜线而不是路径中的点
  • 你可以getResource()直接在课堂上打电话.

  • 请注意,`Class#getResource`和`ClassLoader#getResource`正在使用不同的策略将名称映射到一个位置.LucaB的例子实际上使用了Class <java.lang.Class>(`SomeClass.class.getClass()`)中的ClassLoader,但这可能是一个错误,而不是故意的. (7认同)

aru*_*436 14

而不是显式编写您可以使用的类名

this.getClass().getResource("/unibo/lsb/res/dice.jpg");
Run Code Online (Sandbox Code Playgroud)

  • 或者只是`getClass()`没有`this`. (15认同)
  • 这假设您不在静态上下文中. (10认同)

小智 5

如果从static方法调用,请使用:

TestGameTable.class.getClassLoader().getResource("dice.jpg");
Run Code Online (Sandbox Code Playgroud)