Java: NullPointerException вызвано определением класса? - PullRequest
0 голосов
/ 26 октября 2011

Я получаю следующее исключение NullPointerException:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at com.foo.JawsFileChooser.a(SourceFile:28)
    at com.foo.JawsFileChooser$1.actionPerformed(SourceFile:91)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
    [...snip...]

когда пользователи нажимают кнопку в моем приложении и выполняют определенный набор шагов. Но строка 28 в JawsFileChooser.java - это строка, которая определяет класс:

public class JawsFileChooser extends JPanel implements SwingConstants, DebugConstants {

. На что можно взглянуть, чтобы понять, почему это происходит?

Заранее спасибо за любую помощь.

Ответы [ 3 ]

3 голосов
/ 26 октября 2011

На что я могу взглянуть, чтобы понять, почему это происходит?

Вы можете взглянуть на SourceFile:28, это часть com.foo.JawsFileChooser.a и разыменованиессылка null

РЕДАКТИРОВАТЬ: я видел первую строку класса, сообщенную в stacktrace в присутствии анонимных внутренних классов.Например, следующий код

 1 import java.util.concurrent.*;
 2 
 3 class An {
 4 
 5  private String foo()
 6  {
 7      return "foo";
 8  }
 9  
10  public static void main(String[] args) {
11      final An an = null;
12      (new Callable<String>() {
13          public String call() {
14              return an.foo();
15          }
16      }).call();
17  }
18 }

Результат:

javac -g An.java && java -cp . An
Exception in thread "main" java.lang.NullPointerException
    at An.access$000(An.java:3)
    at An$1.call(An.java:14)
    at An.main(An.java:12)

Имя синтезированного метода напечатано, но номер строки аналогичен вашему случаю.Я бы посмотрел на com.foo.JawsFileChooser$1.actionPerformed(SourceFile:91)

0 голосов
/ 26 октября 2011

Вероятность того, что в методе actionPerformed (...) кнопки он ссылается на выбор, который может не существовать (или может не иметь содержимого).Вы написали свой код для обработки этих условий?Если нет, возможно, вы пытаетесь что-то сделать / проверить по нулевому указателю.

0 голосов
/ 26 октября 2011

Не всегда полагайтесь на номера строк!И даже если вы это сделаете, посмотрите на строку 91 -

на com.foo.JawsFileChooser $ 1.actionPerformed (SourceFile: 91)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...