Java 使用getResource()获取资源

Java 使用getResource()获取资源,java,resources,getresource,Java,Resources,Getresource,我需要在java项目中获取一个资源映像文件。我正在做的是: URL url = TestGameTable.class.getClass(). getClassLoader().getResource("unibo.lsb.res/dice.jpg"); 目录结构如下所示: unibo/ lsb/ res/ dice.jpg test/ ..../ /* other packages */ 事实上,由于文件不存在,我总是得到。我尝试

我需要在java项目中获取一个资源映像文件。我正在做的是:

URL url = TestGameTable.class.getClass().
          getClassLoader().getResource("unibo.lsb.res/dice.jpg");
目录结构如下所示:

unibo/
  lsb/
    res/
      dice.jpg
    test/
    ..../ /* other packages */
事实上,由于文件不存在,我总是得到。我尝试了许多不同的途径,但我无法解决这个问题。 有什么提示吗

  • 前导斜杠表示类路径的根
  • 路径中的斜线而不是点
  • 您可以直接在类上调用
    getResource()

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

      this.getClass().getResource("/unibo/lsb/res/dice.jpg");
      

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

      TestGameTable.class.getClassLoader().getResource("dice.jpg");
      

      需要记住的一点是,这里的相关路径是相对于类的文件系统位置的路径。。。在您的情况下,TestGameTable。。它与TestGameTable的位置无关。java文件。

      我在这里留下了更详细的答案

      请注意,
      Class#getResource
      ClassLoader#getResource
      使用不同的策略将名称映射到一个位置。LucaB的示例实际上使用了类中的类加载器(
      SomeClass.Class.getClass()
      ),但这可能是个错误,不是故意的。@jambjo是的,我认为这是个错误。这是个错误。感谢hintI对其进行了测试,但返回空值。我是这样写的:
      MyClass.class.getResource(“/WebContent/WEB-INF/xsd/MyXsd.xsd”)
      。我犯了什么错误?或者只是
      getClass()
      而没有
      this
      。这是假设您不在静态上下文中。如果调用非静态方法呢?
      .class
      文件不一定直接存储在文件系统中。它也可能是
      .jar
      文件的一部分……我注意到
      TestGameTable.class.getClassLoader().getResource(“dice.jpg”)在打包的App/jar中工作,但是
      getClass().getResource(“/unibo/lsb/res/dice.jpg”)不起作用。
      
      TestGameTable.class.getClassLoader().getResource("dice.jpg");