从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()不会查看jar。 它查看类加载器的类路径。 因此,图像是否在jar子中并不重要。 它必须在类路径中。 显然,当您从Eclipse启动时,eclipse的目标文件夹(通常是binclasses )位于应用程序的运行时类路径中。