从JAR或文件系统加载ImageIcon

Mar*_*ijn 11 java eclipse resources jar image

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

Eclipse项目是这样的:

- Project (java)
  - src
    - controller
      - Main.java
    - ui
      - Display.java
  - images
    - image.jpg
Run Code Online (Sandbox Code Playgroud)

从Eclipse中运行的代码片段:

ImageIcon image = new ImageIcon("images/image.jpg);
Run Code Online (Sandbox Code Playgroud)

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

java.net.URL imgURL = getClass().getResource("/images/image.jpg");
ImageIcon image = new ImageIcon(imgURL);
Run Code Online (Sandbox Code Playgroud)

为了获得在两种情况下都能工作的单个代码,我需要更改什么?

JB *_*zet 9

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

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