gradle打成jar包后通过classgetResource读取不到文件
在Gradle中,通过class.getResource()方法读取文件时,文件路径是相对于类路径的。当你使用Gradle打成jar包后,可以将文件放在以下位置之一,以确保能够读取到文件:
- 将文件放在
src/main/resources目录下,Gradle会将该目录下的文件复制到jar包的根目录。 - 将文件放在
src/main/resources目录下的子目录中,Gradle会将该子目录及其文件复制到jar包的根目录下的相应位置。 - 使用
sourceSets配置自定义的资源目录,例如:
sourceSets {
main {
resources {
srcDirs = ['src/main/myresources']
}
}
}
将文件放在src/main/myresources目录下,Gradle会将该目录下的文件复制到jar包的根目录。
一旦文件位于正确的位置,你可以使用以下代码来读取文件:
InputStream inputStream = MyClass.class.getResourceAsStream("/path/to/file");
请确保路径以斜杠/开头,表示从根目录开始的相对路径。
如果你已经按照上述方法放置了文件但仍然无法读取到文件,请确保在打包时将资源包含在jar包中。可以使用以下Gradle配置来实现:
jar {
from {
configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
}
}
原文地址: http://www.cveoy.top/t/topic/jdKJ 著作权归作者所有。请勿转载和采集!