在Java / Gradle环境中访问资源

时间:2015-02-15 23:13:31

标签: java android android-studio gradle resources

我的问题与this问题类似,但不幸的是,他们的答案对我没有用。我有一个基于gradle的java项目,具有以下结构

.
├── myproject
│      ├── src
│      |    └── main
│      |         ├── java
│      |         └── resources
│      |               └── templates
│      |                      └── myresource.bmp
|      ├── build
|      |     ├── classes
|      |     └── resources
|      |          └── main
│      |               └── templates
│      |                      └── myresource.bmp

由于我想在Android和Windows上运行我的代码,因此我使用以下内容访问资源

ClassLoader classLoader = Thread.currentThread().getContextClassLoader()
res = classLoader.getResourceAsStream("templates/myresource.bmp");

这在以前用于Eclipse,因为我只是将我的资源放入src文件夹并将其复制到目标目录。但是当迁移到Android Studio和Gradle时,我将资源移动到资源文件夹中,我认为它们属于它,现在它不再位于src / path下。

现在,每当我执行该代码时,我只会得到null。对我而言,似乎路径有些不正确。我尝试了以下路径:

  • /myresource.bmp
  • myresource.bmp
  • 模板/ myresource.bmp
  • 资源/模板/ myresource.bmp
  • ../../资源/主/模板/ myresource.bmp

但似乎没有任何效果。

也许我使用了错误的类加载器,但实际上看起来还不错。 ClassLoader debugging paths

加载资源的正确途径是什么?还有一件事需要提及:项目' myproject'在我的例子中是一个加载资源的库,如果它在某种程度上相关,则从另一个测试项目调用它。

1 个答案:

答案 0 :(得分:1)

正确的路径为/templates/myresource.bmp

有关详细信息,请参阅此答案:https://stackoverflow.com/a/3727998/1743880