【问题标题】:Loading ImageIcon from JAR or file system从 JAR 或文件系统加载 ImageIcon
【发布时间】:2024-05-19 10:30:02
【问题描述】:

我有一个需要显示图像的简单程序。 我知道如何从 Eclipse 中运行代码,也知道如何从 JAR 文件中运行,但我想要一个适用于这两种情况的解决方案。

Eclipse 项目是这样的:

- Project (java)
  - src
    - controller
      - Main.java
    - ui
      - Display.java
  - images
    - image.jpg

在 Eclipse 中工作的代码 sn-p:

ImageIcon image = new ImageIcon("images/image.jpg);

适用于 JAR 的那个(都在一个 JAR 文件中):

java.net.URL imgURL = getClass().getResource("/images/image.jpg");
ImageIcon image = new ImageIcon(imgURL);

为了获得在这两种情况下都有效的一段代码,我需要进行哪些更改?

【问题讨论】:

  • 你在这两种情况下都试过第二次了吗?这可能只是为您回答您自己的问题(并为您节省在这里等待答案的时间)!
  • 你好?这个麦克风打开了吗?
  • @Hovercraft 满满的鳗鱼。是的,显然我在这两种情况下都尝试了两种代码 sn-ps。

标签: java eclipse image resources jar


【解决方案1】:

images 文件夹放在src 文件夹中,Eclipse 会将图像复制到目标文件夹(通常为binclasses),这将使它们在类路径中可用,就像它们在您应用的已发布版本中的 jar 中。

getResource() 不看罐子。它在类加载器的类路径中查找。因此,图像是否在罐子中并不重要。它必须在类路径中。显然,当您从 Eclipse 启动应用程序时,Eclipse 的目标文件夹(通常为binclasses)位于应用程序的运行时类路径中。

【讨论】:

  • 非常感谢!将images 文件夹移动到src 中确实是解决方案。我的第二个代码 sn-p 在 Eclipse 和从 Jar 运行时都没有改变。
最近更新 更多