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