【发布时间】:2022-01-24 16:43:19
【问题描述】:
我在从 gradle 项目构建 jar 时遇到了一些麻烦。即 gradle 不包括我的资源文件夹,即使我在 build.gradle 中指定了它,如下所示:
plugins {
id 'application'
}
repositories {
mavenCentral()
}
application {
mainClass = 'skorupinski.xmass.Main'
}
sourceSets {
main {
java {
srcDirs = ['./src/main/java']
}
resources {
srcDirs = ['./src/main/resources']
}
}
}
jar {
manifest {
attributes(
'Main-Class': 'skorupinski.xmass.Main'
)
}
baseName = 'hi'
}
我加载到我的 java 程序中的资源文件夹中有图像。当我运行 jar 文件时,它返回一个错误,除非我将 jar 放在与 src 文件夹相同的目录中,否则它无法归档图像文件。
【问题讨论】:
-
如何加载图像文件?我很确定 Gradle 会做它一直做的事情并包含资源文件夹。也许您尝试加载图像的方式是真正的问题。
-
@ThomasKläger 我通过路径“src/main/resources/image.png”加载它,当我在没有构建到 jar 的情况下运行它时,它可以完美运行。
-
要获取放置在我的 jar 文件中的资源,我在我的 jar 任务中指定:
from (buildDir) { include 'pattern' }。 -
@JeffHolt 我试过这样:
from('src/main') { include 'resources/*.png' }没有效果 -
您是真的加载资源(如stackoverflow.com/a/15749260:
InputStream is = MyTest.class.getResourceAsStream("/image.png");中所述)还是尝试从文件系统加载它(InputStream is = new FileInputStream("./image.png");)?由于文件系统中不存在打包的资源,因此您无法使用java.io.File/java.io.FileInputStream等访问它们