从 Java 访问 gradle 资源

2022-09-02 21:27:16

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

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

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

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

但它找不到该文件。

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

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

关于我做错了什么的任何想法?


答案 1

好吧,似乎我的困难来自另一个问题(资源没有被复制到适当的位置)。一旦我解决了这个问题,ClassLoader就能够使用以下两种形式之一找到我的资源:

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

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

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

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

答案 2

http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html#getResource(java.lang.String)

例如,类似的东西或在适当的时候使用相对路径。MyMain.class.getResource("/config.txt")


推荐