java - 从 Java 访问 gradle 资源

标签 java resources gradle

我有一个具有这种结构的基于 gradle 的 java 项目

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

我正在尝试使用 ClassLoader 访问 resources 文件夹中的一些文件,如下所示

ClassLoader.getSystemClassLoader().getResoure("/myresource.xml");

但它没有找到该文件。

我发现访问这些文件的唯一方法是探索项目的已知结构

Path resourcesPath= FileSystems.getDefault().getPath(System.getProperty("user.dir"), "/src/main/resources/");

知道我做错了什么吗?

最佳答案

好吧,看来我的困难来自另一个问题(资源没有被复制到正确的地方)。一旦我解决了这个问题,ClassLoader 就可以使用以下两种形式之一找到我的资源:

ClassLoader.getSystemClassLoader().getResource("./myresource.xml");

ClassLoader.getSystemClassLoader().getResource("myresource.xml");

编辑: 当使用其他应用程序中嵌入的 jar 时,以前的解决方案不起作用,在这种情况下使用:

Thread.currentThread().getContextClassLoader().getResource("myresource.xml")

关于java - 从 Java 访问 gradle 资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24940815/

相关文章:

java - 在静态方法中获取实际泛型类型的类对象

java - 解析 Jar 中的 XML 文件

c++ - 在 native Windows 应用程序的资源中嵌入文本文件

gradle - gradle.daemon react-native:无法找到或加载主类 “Dorg.gradle.daemon=true”

firebase - React Native 崩溃 - 灰屏 - 仅限 App Center 构建 - com.facebook.react.bridge.CatalystInstanceImpl.jniLoadScriptFromAssets(Native Method)

java - 在文件中写入和读取整数和字符串

java - 我的程序似乎效率低下

java - 如何从 "new map()"HQL 生成的列表中获取值?

Maven 资源过滤破坏下载

java - 如何从 build.gradle 更改 .java 文件中的某些值?