当我从eclipse将我的代码导出为runnable JAR时,即使它们实际上在JAR中,我设置它的所有文件都会丢失,例如按钮图像和其他文件。我在文件前面添加了getClass().getResource
但是当我尝试运行JAR时,什么都没发生,有什么建议吗?
答案 0 :(得分:22)
好像你没有把你的东西放在正确的意义上。为了使其工作,请按照下列步骤操作:
Project
中的Project Explorer Tree
。New -> Source Folder
,然后向Name
提供Source Folder
。Source Folder
,就像您要添加图片然后制作New Folder
一样,手动访问此Source Folder
到File System
}。New Folder
命名为images
,并将您的图片复制到此Folder
。Refresh
Project
,右键单击您的项目,此处您可以在刷新后立即查看添加的内容。现在,为了访问,比如任何图像,您将使用。
getClass().getResource("/images/yourImageName.extension");
将返回一个URL对象。在这种情况下,请记住first forward slash
,因为在此帮助下访问源文件夹中的内容更简单。现在,当您运行项目时,此源文件夹的内容将自动添加到bin文件夹中,当您创建Runnable Jar时,可以按原样访问源文件夹中的内容。
答案 1 :(得分:1)
路径需要适合资源。
如果“foo.gif”位于jar的根目录,则必须使用“/foo.gif”引用它。
如果程序在完成清理和重建后正常工作,但作为jar失败,则很可能没有包含在jar中的文件。
答案 2 :(得分:0)
尝试将文件夹放入jar中,方法与在程序中获取文件夹相同。将相同的资源放在项目中的相同位置。 jar将以与编译器相同的方式引用它们。
答案 3 :(得分:0)
你需要使用像这样的流来获取图像 - this.class.getClassLoader()。getResourceAsStream(“test.jpg”)并确保图像存在于您引用的jar中。
答案 4 :(得分:0)
如nIcE cOw所述,您只需在Project Explorer Tree中创建一个Source Folder。 该文件夹中的所有文件都将位于根项目文件夹中。
要引用它们,您必须将项目名称写为斜杠文件名:
getClass().getResource("ProjectName/image.extension");
我希望这有帮助!