2012-12-24 34 views
1
package common; 

import java.awt.image.BufferedImage; 
import java.io.InputStream; 

import javax.imageio.ImageIO; 
import javax.swing.Icon; 
import javax.swing.ImageIcon; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 

public class ResourcesToAccess { 
    public static Icon sharedAbstractDownIcon; 
    public static Icon sharedAbstractPlayIcon; 
    public static Icon sharedAbstractPauseIcon; 
    public static Icon sharedAbstractBlackCursor; 
    public static Icon sharedAbstractWhiteCursor; 
    public ResourcesToAccess(){ 
     InputStream is = this.getClass().getClassLoader().getResourceAsStream("/src/images/blackCursor.png"); 
     try{ 
      BufferedImage bi = ImageIO.read(is); 
      sharedAbstractBlackCursor = (Icon) new ImageIcon(bi); 
      new JFrame().add(new JLabel(sharedAbstractBlackCursor)).setVisible(true); 
     }catch(Exception e){ 
      e.printStackTrace(); 
     } 
    } 
    public static void main(String[] args) { 
     new ResourcesToAccess(); 
    } 
} 

我使用这个代码,看看是否PNG图像可以被正确地加载到创建的JLabel,图标等,但我得到的错误:的Java不加载嵌入图像

java.lang.IllegalArgumentException: input == null! 
    at javax.imageio.ImageIO.read(Unknown Source) 
    at common.ResourcesToAccess.<init>(ResourcesToAccess.java:21) 
    at common.ResourcesToAccess.main(ResourcesToAccess.java:29) 

为什么我看到那个错误信息?

回答

4

尝试

this.getClass().getClassLoader().getResourceAsStream("images/blackCursor.png") 

它正在你的classpath所以没有更多的src目录下有

+0

谢谢你,Jigar!它工作得很好! :) –

+1

不客气:),节日快乐 –

+0

你可能想检查一下:http://stackoverflow.com/questions/14023146/imageicon-lost-after-creating-a-runnable-jar-file **简单的方法将不胜感激** –