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

8

当我从Eclipse将我的代码导出为可运行的JAR文件时,我设置了抓取像按钮图像和其他文件这样的文件,但它们实际上在JAR文件中却丢失了。我在文件前面添加了getClass().getResource,但是当我尝试运行JAR文件时,什么都没有发生,有什么建议吗?


2
请展示一些实际的代码,以及列出您的JAR文件内容并显示路径。 - ziesemer
5个回答

24

看起来你没有将你的文件放在正确的位置。为了使它工作,请按照以下步骤进行:

  1. 右击 Project Explorer Tree 中的 Project
  2. 进入 New -> Source Folder,然后为 Source Folder 提供任意的 Name
  3. 现在手动将你的内容添加到所创建的 Source Folder 中,比如如果你想要添加图片,则通过 File System 手动访问这个 Source Folder,创造一个 New Folder
  4. 将这个 New Folder 命名为 images 并将你的图片复制到这个 Folder 中。
  5. 现在回到你的 Eclipse IDE,并通过右键点击你的 Project,在 Project Explorer 中进行 Refresh,你会发现你添加的内容已经在刷新后显示出来了。

现在,为了访问,例如任何一张图片,你会使用:

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

这将返回一个URL对象。要记住第一个正斜杠,因为无论你的源文件夹中有什么,都可以通过它来访问,简单来说。现在当您运行项目时,此源文件夹的内容将自动添加到bin文件夹中,当您创建可运行的Jar文件时,源文件夹中的内容可以按原样访问。


1

资源的路径需要正确。

如果"foo.gif"位于JAR文件的根目录下,您必须使用"/foo.gif"来引用它。

如果程序在完全清理和重新构建后正常工作,但在作为JAR文件运行时失败,那很可能是您没有将文件包含在JAR文件中。


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

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

0

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

要引用它们,您必须将项目名称和文件名写成斜杠形式:

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

希望这能帮到你!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接