Java 使用getResource()获取资源
我需要在java项目中获取一个资源映像文件。我正在做的是: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 */ 事实上,由于文件不存在,我总是得到。我尝试
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");