在Eclipse中使用JAR导出图像(Java)

我一直在做一个需要外部图像显示的小项目。 我并不熟悉如何使用Eclipse,这是我第一次尝试导出已完成的项目,以便我可以与其他人共享。 现在,似乎我可以让我的图像显示的唯一方法是,如果我在硬盘驱动器上分配一个特定的文件夹,并在代码中使用图像路径。 我正在寻找一种方法来导出图像作为我的JAR的一部分或作为同一个包的一部分,所以当我将这个程序发送给其他人时,我不必向他们发送一个单独的存档图像文件夹。 我也有兴趣了解我需要做什么才能让我的代码引用该包中的图像,这样它们就可以在没有外部文件夹的情况下工作。 我已经阅读过Eclipse中的某种包系统,但到目前为止还没有找到如何使用它的运气。 可以用一些解释!

提前感谢愿意给我两美分的人。

如果它们在jar中,您可能需要将它们作为类路径资源加载。 请参阅:getClass()。getClassLoader()。getResourceAsStream(…)

我对这个答案有用的东西如下:确保你把你的图像/文件放在同一个eclipse文件夹(或下面的子文件夹)作为你的源代码。 我使用eclipse创建了一个文件夹“images_ignored”,将其添加到构建路径中但仍拒绝包含在我的JAR文件中(创建可执行JAR时)。

Eclipse屏幕截图显示的是放置图像

只需将images文件夹拖到Eclipse项目中,然后根据Eclipse版本选择“复制新文件夹”或“复制文件和文件夹”,然后右键单击图像文件夹(在Eclipse中)和 – >构建路径“使用作为源文件夹“。

使用getResource()加载图像:

 ImageIcon qmarkIcon = new ImageIcon(getClass().getResource("images/mark.gif")); 

如果您使用的是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()); } 

如果将此代码输入到返回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。

如果您添加一个文件夹来构建路径,您可以在eclipse中检索图像,当您在jar文件中导出图像时,请记住不要使用img/myImage.gif这样的路径引用图像,但只能使用myImage.gif