我一直在做一个需要外部图像显示的小项目。我不熟悉如何使用Eclipse,这是我第一次尝试导出已完成的项目,以便我可以与其他人共享。现在,似乎我可以让我的图像显示的唯一方法是,如果我在硬盘上分配一个特定的文件夹,并在代码中使用图像路径。 我正在寻找一种方法来导出图像作为我的JAR的一部分或作为同一个包的一部分,所以当我将这个程序发送给其他人时,我不必向他们发送一个单独的存档图像文件夹。我也有兴趣了解我需要做什么才能让我的代码引用该包中的图像,这样它们就可以在没有外部文件夹的情况下工作。 我已经阅读过Eclipse中的某种包系统,但到目前为止还没有找到如何使用它的运气。可以用一些解释!
提前感谢愿意给我两美分的人。
答案 0 :(得分:10)
我对此答案有用的东西如下:确保将图像/文件放在同一个eclipse文件夹(或下面的子文件夹)作为源代码。我使用eclipse创建了一个文件夹“images_ignored”,将其添加到构建路径中,但仍然拒绝将其包含在我的JAR文件中(创建可执行JAR时)。
答案 1 :(得分:6)
只需将images文件夹拖到Eclipse项目中,然后根据Eclipse版本选择“复制新文件夹”或“复制文件和文件夹”,然后右键单击图像文件夹(在Eclipse中)和 - >构建路径“用作源文件夹”。
答案 2 :(得分:2)
如果它们在jar中,您可能需要将它们作为类路径资源加载。请参阅:getClass()。getClassLoader()。getResourceAsStream(...)
答案 3 :(得分:1)
使用getResource()加载图片:
ImageIcon qmarkIcon = new ImageIcon(getClass().getResource("images/mark.gif"));
答案 4 :(得分:0)
如果您使用的是JDK 1.7或JDK 1.8,则可能需要使用NIO.2 API。
for (FileSystemProvider provider : FileSystemProvider.installedProviders()) {
if ("jar".equals(provider.getScheme()))
return provider.newFileSystem((new File(Start.class
.getProtectionDomain().getCodeSource().getLocation().toURI()))
.toPath(), new HashMap<String, Object>());
}
如果将此代码输入到返回java.nio.file.FileSystem的方法中,则可以调用该方法获取JAR文件的FileSystem。
要获取访问JAR文件中文件的路径,可以使用以下方法,然后允许您阅读所需的文件。
fileSystem.getPath("/images/image.gif")
如果您希望能够在Eclipse中运行它,请确保使用try / catch IOException包围对该方法的调用,并为您的FileSystem对象分配以下内容。
new File(Start.class.getProtectionDomain().getCodeSource().getLocation().toURI())
.toPath().toString();
这将允许您运行程序,无论它是否已压缩为JAR文件。
我建议你习惯使用NIO.2,因为它是一个非常强大的API。
答案 5 :(得分:-1)
如果您添加一个文件夹来构建路径,您可以在eclipse中检索图像,当您在jar文件中导出图像时,只需记住不要使用类似{{的路径引用图像1}}但只有img/myImage.gif
!