我有一个需要显示图像的简单程序。 我知道如何从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);
为了获得在两种情况下均有效的单一代码,我需要更改哪些内容?
答案 0 :(得分:9)
将images
文件夹放在src
文件夹中,Eclipse会将图像复制到目标文件夹(通常为bin
或classes
),这将使它们成为可能可以从类路径中获取,就像它们在您的应用程序的已发布版本中的jar中一样。
getResource()
没有查看jar。它查看类加载器的类路径。因此,图像是否在罐子中并不重要。它必须在类路径中。显然,当您从Eclipse启动时,eclipse的目标文件夹(bin
或classes
)通常位于应用程序的运行时类路径中。