可运行的JAR缺less图像/文件(资源)
当我从eclipse将我的代码作为可运行的JAR导出时,即使它们实际上位于JAR中,我也将所有设置为抓取的文件(如button图像和其他文件)都丢失。 我已经在文件前面添加了getClass().getResource
,但是当我尝试运行JAR时甚至没有发生任何build议?
好像你没有把你的东西放在正确的意义上。 为了使其工作,请按照下列步骤操作:
- 在
Project Explorer Tree
右键单击您的Project
。 - 转到
New -> Source Folder
,然后提供任何Name
到Source Folder
。 - 现在手动添加你的东西到这个由你创build的
Source Folder
,就像如果你想添加图片,然后创build一个New Folder
,通过手动访问这个Source Folder
通过File System
。 - 将此
New Folder
命名为images
并将您的图像复制到此Folder
。 - 现在返回到Eclipse IDE并通过右键单击项目浏览器
Refresh
项目,在这里您可以在刷新后看到添加的内容。
现在为了访问,说任何图像,你会使用。
getClass().getResource("http://img.dovov.comyourImageName.extension");
这将返回一个URL对象。 请记住第first forward slash
,在这种情况下,因为在源文件夹内的任何东西都可以用这个简单的术语来访问。 现在,当你运行你的项目时,这个源文件夹的内容将被自动添加到bin文件夹中,当你创build一个Runnable Jar的时候,你的源文件夹中的东西就可以被访问了。
path需要适合资源。
对于“foo.gif”位于jar的根部,您必须使用“/foo.gif”来引用它。
如果程序在一个完整的清理和重build后正常工作,但作为一个jar失败,你很可能没有包含在jar中的文件。
试着把文件夹放在jar里,就像你在程序中得到它们一样。 将相同的资源放在项目中的相同位置。 这个jar会像编译器那样引用它们。
你需要像这样使用stream – this.class.getClassLoader()。getResourceAsStream(“test.jpg”)来获取图像,并确保图像出现在你引用的jar中。
正如你所说,你只需要在你的工程资源pipe理器树中创build一个源文件夹。 该文件夹内的所有文件将位于根项目文件夹中。
要引用它们,你必须写下你的项目名称斜线的文件名称:
getClass().getResource("ProjectName/image.extension");
我希望这有帮助!