为什么 getResource return 为空
Why does getResource return null
我正在尝试访问我项目中的一个文件。但是 getResource 方法 returns null.
这是我的项目的样子:
Thread.currentThread().getContextClassLoader().getResource("assets/xxx.png"); //returns null
以及 eclipse 工作区中项目文件夹的样子:
为什么?我想访问资产文件夹中的文件吗?
编辑
我创建了一个 jar 文件,这是 jar 的内容:
已解决
首先,我有很多图像文件,所以我想将它们全部整理到一个文件夹中。我将资产文件夹放在 src 目录中,终于可以访问文件了。
this.getClass().getClassLoader().getResource("assets/xxx.png");
尝试使用 /
前缀。
Thread.currentThread().getContextClassLoader().getResourceAsStream("/xxx.png")
有很多方法可以将资源添加到 jar 文件中,您可以将其放在 src 中,如果您使用 maven、ant 等,则将其添加为资源...如果您能够捆绑整个目录,那么您应该能够使用您的原始代码。
使用当前结构,您可以使用以下代码。
Thread.currentThread().getContextClassLoader().getResource("/xxx.png").
您使用当前 class 的 class 加载程序是否有原因? this.getClass().getClassLoader().getResource("/xxx.png")
之类的应该更可靠。
使用下面的代码,应该可以。
YOUR_CLASS_HERE.class.getClass().getResource( "/xxx.png" );
例如
Signin.class.getClass().getResource( "/xxx.png" );
这两种方法都行得通。这只是文件路径问题。
- 您的 Jar 结构显示没有 "asset" 文件夹
xxx.png 文件直接在 Jar 文件中。
尝试从下面的代码行中删除 "assets"。
Thread.currentThread().getContextClassLoader().getResource("assets/xxx.png"); //returns null
- 此外,如果您想在您的类路径中使用 "assets" 文件夹,请确保您的 jar 包含 "assets" 文件夹。
对于像我这样挣扎的人。对于 Maven,只需 运行 mvn clean install
。
之后 Thread.currentThread().getContextClassLoader().getResource()
应该可以工作。
我正在尝试访问我项目中的一个文件。但是 getResource 方法 returns null.
这是我的项目的样子:
Thread.currentThread().getContextClassLoader().getResource("assets/xxx.png"); //returns null
以及 eclipse 工作区中项目文件夹的样子:
为什么?我想访问资产文件夹中的文件吗?
编辑 我创建了一个 jar 文件,这是 jar 的内容:
已解决
首先,我有很多图像文件,所以我想将它们全部整理到一个文件夹中。我将资产文件夹放在 src 目录中,终于可以访问文件了。
this.getClass().getClassLoader().getResource("assets/xxx.png");
尝试使用 /
前缀。
Thread.currentThread().getContextClassLoader().getResourceAsStream("/xxx.png")
有很多方法可以将资源添加到 jar 文件中,您可以将其放在 src 中,如果您使用 maven、ant 等,则将其添加为资源...如果您能够捆绑整个目录,那么您应该能够使用您的原始代码。 使用当前结构,您可以使用以下代码。
Thread.currentThread().getContextClassLoader().getResource("/xxx.png").
您使用当前 class 的 class 加载程序是否有原因? this.getClass().getClassLoader().getResource("/xxx.png")
之类的应该更可靠。
使用下面的代码,应该可以。
YOUR_CLASS_HERE.class.getClass().getResource( "/xxx.png" );
例如
Signin.class.getClass().getResource( "/xxx.png" );
这两种方法都行得通。这只是文件路径问题。
- 您的 Jar 结构显示没有 "asset" 文件夹
xxx.png 文件直接在 Jar 文件中。
尝试从下面的代码行中删除 "assets"。
Thread.currentThread().getContextClassLoader().getResource("assets/xxx.png"); //returns null
- 此外,如果您想在您的类路径中使用 "assets" 文件夹,请确保您的 jar 包含 "assets" 文件夹。
对于像我这样挣扎的人。对于 Maven,只需 运行 mvn clean install
。
之后 Thread.currentThread().getContextClassLoader().getResource()
应该可以工作。