可运行的 JAR 缺少图像/文件(资源)

Posted

技术标签:

【中文标题】可运行的 JAR 缺少图像/文件(资源)【英文标题】:Runnable JARs missing Images/Files (Resources) 【发布时间】:2012-02-16 03:19:11 【问题描述】:

当我从 Eclipse 将我的代码导出为可运行的 JAR 时,我将其设置为抓取的所有文件(例如按钮图像和其他文件)都丢失了,即使它们实际上在 JAR 中也是如此。我已经在文件前面添加了getClass().getResource,但是当我尝试运行 JAR 时甚至没有任何反应,有什么建议吗?

【问题讨论】:

请向我们展示一些实际代码,以及显示路径的 JAR 文件内容列表。 【参考方案1】:

路径必须适合资源。

因为 "foo.gif" 位于 jar 的根目录,您必须使用 "/foo.gif" 引用它。

如果程序在完全清理和重建后正常工作,但作为 jar 失败,则很可能没有包含在 jar 中的文件。

【讨论】:

【参考方案2】:

似乎你没有把你的东西放在正确的意义上。为了使它工作,请按照下列步骤操作:

    Project Explorer Tree 中右键单击您的Project。 转到New -> Source Folder,然后将任何Name 提供给Source Folder。 现在手动将你的东西添加到这个由你创建的Source Folder,比如如果你想添加图像然后创建一个New Folder,通过手动访问这个Source FolderFile System。 将此New Folder 命名为images,并将您的图片复制到此Folder。 现在回到您的 Eclipse IDE 和 Refresh 您的 Project 从项目资源管理器中,通过右键单击您的项目,您现在可以在刷新后看到您添加的内容。

现在为了访问,说任何图像,你将使用。

getClass().getResource("/images/yourImageName.extension");

这将返回一个 URL 对象。请记住first forward slash,在这种情况下,因为在此的帮助下可以访问源文件夹中的任何内容,用更简单的术语来说。现在当你运行你的项目时,这个 Source 文件夹的内容会自动添加到 bin 文件夹中,当你创建一个 Runnable Jar 时,你的 Source 文件夹中的东西就可以按原样访问了。

【讨论】:

【参考方案3】:

尝试将文件夹放入 jar 中,方法与将它们放入程序中的方法相同。将相同的资源放在项目中的相同位置。 jar 将以与编译器相同的方式引用它们。

【讨论】:

【参考方案4】:

您需要像这样使用流获取图像 - this.class.getClassLoader().getResourceAsStream("test.jpg") 并确保图像存在于您引用的 jar 中。

【讨论】:

【参考方案5】:

正如nIcE cOw 所说,您只需要在项目资源管理器树中创建一个源文件夹。 该文件夹中的所有文件都将位于根项目文件夹中。

要引用它们,您必须将您的项目名称与文件名的斜线相同:

getClass().getResource("ProjectName/image.extension");

我希望这会有所帮助!

【讨论】:

以上是关于可运行的 JAR 缺少图像/文件(资源)的主要内容,如果未能解决你的问题,请参考以下文章

包含 Eclipse 和可运行 Jar 的资源

使用 Spring Boot Maven 插件时,jar 文件中缺少 Spring Boot 应用程序中的资源

在运行作为 JAR 存档分发的项目时加载图像等资源

spring boot打jar包运行,加载jar包外部的页面以及静态资源文件

Maven 打包可运行 jar

用于资源导出的 Maven 配置