【问题标题】:Accessing resource in Java/Gradle Environment在 Java/Gradle 环境中访问资源
【发布时间】:2015-02-16 07:18:47
【问题描述】:

我的问题类似于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/ 路径下。

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

  • /myresource.bmp
  • myresource.bmp
  • 模板/myresource.bmp
  • 资源/模板/myresource.bmp
  • ../../resources/main/templates/myresource.bmp

但似乎没有任何效果。

也许我使用了错误的类加载器,但它实际上看起来没问题。

加载资源的正确路径是什么?还要提一件事:在我的情况下,项目“myproject”是一个加载资源的库,如果相关的话,它会从另一个测试项目中调用。

【问题讨论】:

    标签: java android android-studio gradle resources


    【解决方案1】:

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

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

    【讨论】:

    • 不...没用。也许类加载器是错误的。注意资源在C:\ProjectA\src\main\resources\templates\myresource.bmp,复制到C:\ProjectA\build\resources\main\templates\myresource.bmp
    • /main/templates/myresources.bmp 就是这样。绝对路径从classesresources 目录开始。
    猜你喜欢
    • 1970-01-01
    • 2015-03-11
    • 1970-01-01
    • 2016-01-23
    • 2014-02-14
    • 2014-06-11
    • 1970-01-01
    • 1970-01-01
    • 2011-04-26
    相关资源
    最近更新 更多