从JAR或文件系统加载ImageIcon



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

Eclipse项目是这样的:

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

在Eclipse中工作的代码片段:

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

适用于JAR(全部在一个JAR文件中)的:

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

为了得到一段在这两种情况下都能工作的代码,我需要更改什么?

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

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

最新更新