为什么getResource返回null

时间:2015-04-26 12:46:41

标签: java eclipse jar assets getresource

我正在尝试访问项目中的文件。但是getResource方法返回null。

这就是我的项目的样子: enter image description here

Thread.currentThread().getContextClassLoader().getResource("assets/xxx.png"); //returns null

eclipse工作区中的项目文件夹如何:

enter image description here

为什么呢?我想访问资产文件夹中的文件?

修改 我创建了一个jar文件,这是jar的内容:

enter image description here

解决

首先,我有很多图像文件,所以我想将它们整理到一个文件夹中。我将assets文件夹放在src目录中,最后我能够访问这些文件。

this.getClass().getClassLoader().getResource("assets/xxx.png");

enter image description here

6 个答案:

答案 0 :(得分:2)

有很多方法可以将资源添加到jar文件中,你可以把它放在src中,如果你使用maven,ant等作为资源添加...如果你能够捆绑整个目录那么你应该能够使用原始代码。 使用当前结构,您可以使用以下代码。

Thread.currentThread().getContextClassLoader().getResource("/xxx.png"). 

答案 1 :(得分:1)

尝试使用/前缀。

Thread.currentThread().getContextClassLoader().getResourceAsStream("/xxx.png")

答案 2 :(得分:0)

你有没有理由使用当前类的类加载器?像this.getClass().getClassLoader().getResource("/xxx.png")这样的东西应该更可靠。

答案 3 :(得分:0)

使用以下代码,它应该可以工作。

YOUR_CLASS_HERE.class.getClass().getResource( "/xxx.png" );

e.g。 Signin.class.getClass().getResource( "/xxx.png" );

答案 4 :(得分:0)

任何一种方法都可行。它只是文件路径问题。

  • 您的Jar结构显示没有“资产”文件夹
    xxx.png文件直接在Jar文件中。

尝试从下面的代码行中删除“资产”。

{{1}}
  • 另外,如果您想在ur classpath中使用“assets”文件夹,请确保您的jar包含“assets”文件夹。

答案 5 :(得分:0)

对于像我这样挣扎的人。对于 Maven,只需运行 mvn clean install。 之后 Thread.currentThread().getContextClassLoader().getResource() 应该可以工作了。