我有一个库(使用Gradle 7.4构建),其结构如下:
|
|- src
| - main
| - - java
| - - resources
在这个库中,我有一个像这样加载资源文件的类:
var resource=this.getClass().getResource("sample.properties");
我的样本。属性文件位于src/main/resources
目录下当构建库时,Gradle将编译后的类放在build/classes/java/main下,资源放在build/resources/main下。
现在,我有一个应用程序,这是一个非gradle项目,有一个模块依赖于我的库。我的应用程序使用库,然后加载资源文件。现在,当我运行我的应用程序时,调试器声明它在build/classes/java/main/mypackage/sample.properties下查找资源文件。
但是,如前所述,资源位于build/resources/main下。
后面的资源为空。
问题:我的库如何相应地加载我的资源文件?
更新24.11:我忘了提到这在Eclipse中工作(因为它将类和资源复制到相同的目录),但不适用于Intellij,现在我正试图用Intellij IDEA解决这个问题。
如果使用你的库(需要一些资源文件)的父应用程序是使用普通java命令构建/编译/运行的非gradle/非maven项目,
您可以尝试在java
命令
-cp
选项)提供。java -cp /path/to/resource application.jar
另一个选项是在库api(方法,类构造函数等)中显式地请求资源文件,这些文件需要由库的用户(父应用程序)提供。这将消除预定义路径上丢失文件的运行时崩溃。