Я написал игру Minesweeper, которая отлично работала на прошлой неделе, но теперь, когда я пытаюсь ее запустить, я получаю исключение NullPointerException, и я не изменил код.
Вероятно, есть одна причина: я установил Ubuntu на свой ноутбук 2 дня назад и попытался скопировать свою папку пользователя из Windows на рабочий стол Ubuntu. Я тупо использовал опцию «переместить сюда», потому что думал, что это скопирует папку (не было никакой опции копирования). Но когда я вернулся в Windows, это было, как будто я был новым пользователем. Поэтому я скопировал эту папку с рабочего стола Ubuntu обратно в Windows, и, к счастью, все мои файлы вернулись.
Вот мой код. В нем говорится, что MinesweeperBoard.show () устарела (этот класс расширяет JFrame), но исключение NullPointerException возникает при board = new MinesweeperBoard(9, 9, 10);
, хотя я и объявил board раньше.
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
System.out.println("Do you want to play beginner (b), intermediate (i), or EXPERT (e)?");
String input = in.next();
MinesweeperBoard board;
if (input.equals("b"))
board = new MinesweeperBoard(9, 9, 10);
else if (input.equals("i"))
board = new MinesweeperBoard(16, 16, 40);
else if (input.equals("e"))
board = new MinesweeperBoard(30, 16, 99);
else
board = new MinesweeperBoard(30, 30, 100);
board.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
board.show();
}
Далее в трассировке стека он указывает на эту строку кода в другом классе:
icons[0] = new ImageIcon(this.getClass().getClassLoader().getResource("0.gif"));
После этого строка трассировки стека будет at javax.swing.ImageIcon.<init>(Unknown Source)
Я пытался собрать все и очистить, но это не помогло.
Отредактировано
Трассировка всего стека:
Exception in thread "main" java.lang.NullPointerException
at javax.swing.ImageIcon.<init>(Unknown Source)
at MBox.<init>(MBox.java:25)
at MinesweeperBoard.<init>(MinesweeperBoard.java:50)
at MinesweeperGame.main(MinesweeperGame.java:16)
Это с тральщика:
for (int i = 0; i < numRows; i++)
{
for (int j = 0; j < numCols; j++)
{
boxes[i][j] = new MBox(i, j); //Line 50
boxes[i][j].setBounds(i * SIZE + 5, j * SIZE + 65, SIZE, SIZE);
boxes[i][j].putSelfInBoard(this);
cont.add(boxes[i][j]);
}
}
Это из MBox:
icons = new ImageIcon[12];
icons[0] = new ImageIcon(this.getClass().getClassLoader().getResource("0.gif")); //Line 25
icons[1] = new ImageIcon(this.getClass().getClassLoader().getResource("1.gif"));
icons[2] = new ImageIcon(this.getClass().getClassLoader().getResource("2.gif"));
...