2

我是 java 新手,在 eclipse linux mint 上使用 java-7-openjdk 运行它时(我认为,虽然不知道 eclipse 是否有自己的 sun jdt),

public class Gui extends JFrame{
private JComboBox box;
private JLabel picture;
private static String[] filename = {"b.PNG","x.PNG"};
private Icon[] pics = {new ImageIcon(getClass().getResource(filename[0])),   
    new ImageIcon(getClass().getResource(filename[1]))};



Exception in thread "main" java.lang.NullPointerException
at javax.swing.ImageIcon.<init>(ImageIcon.java:205)
at bucky.Gui.<init>(Gui.java:10)
at bucky.apples.main(apples.java:12)

我看不出问题出在哪里(linux mint 15 cinnamon)

4

3 回答 3

2

此异常在 ImageIcon 构造函数中引发并声明getClass().getResource(filename[0])orgetClass().getResource(filename[1])为 null

您指定的路径不正确。确保这些图像所在的文件夹在您的类路径中

可以进行简单的检查:

File f = new File("b.PNG");
System.out.println(f.exists());

应该打印你true

于 2013-08-07T13:40:08.440 回答
2

getClass().getResource(filename[0])其中filename[0]isb.PNG表示相对路径,并将尝试从与您的 class 相同的文件夹(即相同的包)加载图像Gui

确保图像实际上位于该位置。

如果您的图像位于默认包中(即您的根源文件夹),您可以将它们加载为getClass().getResource("/" + filename[0])(即使用绝对路径)。

于 2013-08-07T13:47:14.163 回答
0

哦,人为的错误可以如此卑鄙。我的文件不是 b.PNG 和 x.PNG,而是 a.PNG 和 x.PNG 真的很可惜,但还是谢谢。

于 2013-08-07T14:03:59.763 回答