我正在尝试访问项目中的文件。但是getResource方法返回null。
这就是我的项目的样子:
Thread.currentThread().getContextClassLoader().getResource("assets/xxx.png"); //returns null
以及eclipse工作区中的项目文件夹如何:
为什么?我想访问资产文件夹中的文件?
编辑我创建了一个jar文件,这是jar的内容:
解决了
首先,我有很多图像文件,所以我想将它们整理到一个文件夹中。我把assets文件夹放在src目录中,最后我能够访问这些文件。
this.getClass().getClassLoader().getResource("assets/xxx.png");
有很多方法可以将资源添加到jar文件中,你可以将它放在src中,如果你使用maven,ant等作为资源添加...如果你能够捆绑整个目录那么你应该能够使用你的原始的一段代码。使用当前结构,您可以使用以下代码。
Thread.currentThread().getContextClassLoader().getResource("/xxx.png").
尝试使用/
前缀。
Thread.currentThread().getContextClassLoader().getResourceAsStream("/xxx.png")
您是否有理由使用当前类的类加载器?像this.getClass().getClassLoader().getResource("/xxx.png")
这样的东西应该更可靠。
使用以下代码,它应该工作。
YOUR_CLASS_HERE.class.getClass().getResource( "/xxx.png" );
例如Signin.class.getClass().getResource( "/xxx.png" );
任何一种方法都可行。它只是Filepath问题。
尝试从下面的代码行中删除“资产”。
Thread.currentThread().getContextClassLoader().getResource("assets/xxx.png"); //returns null