2012-01-15 110 views
11

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

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

您是否在两种情况下尝试了第二次尝试?那可能只是回答你自己的问题(并且节省你在这里等待答案的时间)! – 2012-01-15 15:42:19

+2

<水龙头,水龙头,水龙头...>你好?这个麦克风开着吗? – 2012-01-15 15:50:11

+0

@Hovercraft全是鳗鱼。是的,显然我在两种情况下都尝试了两个代码片段。 – Martijn 2012-01-15 18:23:12

回答

9

images文件夹中的src文件夹内,然后Eclipse将影像复制到目标文件夹(binclasses,通常情况下),这将提供他们的类路径,就好像他们是在你的罐子发布的应用程序版本。

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

+0

非常感谢! 把'images'文件夹移到'src'里的确是解决方案。我的第二个代码片段在Eclipse和从Jar运行时均保持不变。 – Martijn 2012-01-15 18:24:40