我有一个具有此结构的基于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/");

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

最佳答案

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

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

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

编辑:当使用嵌入在其他应用程序中的jar时,以前的解决方案不起作用,请在这种情况下使用此方法:
Thread.currentThread().getContextClassLoader().getResource("myresource.xml")

10-06 03:23