【问题标题】:Exporting Images with JAR in Eclipse (Java)在 Eclipse (Java) 中使用 JAR 导出图像
【发布时间】:2011-06-19 17:20:45
【问题描述】:

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

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

【问题讨论】:

    标签: java eclipse image jar


    【解决方案1】:

    我会发现对这个答案有用的是:确保将图像/文件放在与源代码相同的 eclipse 文件夹(或下面的子文件夹)中。我使用 Eclipse 创建了一个文件夹“images_ignored”,将其添加到构建路径中,但它仍然拒绝包含在我的 JAR 文件中(在创建可执行 JAR 时)。

    【讨论】:

    • 我认为这有点违反惯例。只有.java 源文件(和其他实际源代码文件)位于src 目录中是有帮助的。我认为@danny 的答案是最充分的,右键单击所需的文件夹并转到构建路径,“用作源文件夹”。这样您就可以轻松地分离资源(图像、声音、来源、配置等)
    • 我专门登录以支持@MichaelPlautz 的评论。请不要仅仅因为它恰好可以工作而在您的 .java 文件中添加图像。
    【解决方案2】:

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

    【讨论】:

    • 谢谢@danny,这个答案解决了我想要做的事情。但是,当您执行此操作时,它会删除底层文件夹。例如,我有一个名为img 的文件夹,它存储了我的所有图像,当我“用作源文件夹”时,img 目录的所有内容都出现在我的@987654323 的基本/根级别@ 文件。为了解决这个问题,我创建了一个名为lnk 的文件夹,然后在lnk 文件夹中创建了一个指向我的img 文件夹的符号链接(在Windows 中,这可以通过JUNCTION 完成)。现在,当我添加lnk“作为源文件夹”时,图像位于jarimg 文件夹中。
    【解决方案3】:

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

    【讨论】:

    • 好的,那么第一个问题是我显然不知道如何使用 Eclipse 将它们放入 JAR。你能向我解释一下吗?
    • 将它们放在类路径上。所以,找到一个eclipse源文件夹并将它们放入其中。或它们所在的任何文件夹 - 只需右键单击并单击添加到构建路径
    【解决方案4】:

    使用 getResource() 加载图片:

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

    【讨论】:

      【解决方案5】:

      如果您使用的是 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。

      【讨论】:

        【解决方案6】:

        如果您添加一个文件夹来构建路径,您可以在 eclipse 中检索图像,当您将其导出到 jar 文件中时,请记住 不要 使用 @987654321 之类的路径引用图像@但只有myImage.gif

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2010-09-30
          • 2014-10-27
          • 2012-10-04
          • 2011-10-06
          • 1970-01-01
          • 2021-07-20
          • 2014-08-01
          • 2012-06-25
          相关资源
          最近更新 更多