在Gradle中,通过class.getResource()方法读取文件时,文件路径是相对于类路径的。当你使用Gradle打成jar包后,可以将文件放在以下位置之一,以确保能够读取到文件:

  1. 将文件放在src/main/resources目录下,Gradle会将该目录下的文件复制到jar包的根目录。
  2. 将文件放在src/main/resources目录下的子目录中,Gradle会将该子目录及其文件复制到jar包的根目录下的相应位置。
  3. 使用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) }
    }
}
gradle打成jar包后通过classgetResource读取不到文件

原文地址: http://www.cveoy.top/t/topic/jdKJ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录