Java:由类定义引起的NullPointerException?

时间:2011-10-26 16:31:19

标签: java swing nullpointerexception

我收到以下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...]

当用户点击我的应用中的按钮并按照一组特定步骤时。但是JawsFileChooser.java中的第28行是定义类的行:

public class JawsFileChooser extends JPanel implements SwingConstants, DebugConstants {

。我该怎么看才能弄清楚为什么会这样?

提前感谢您的帮助。

3 个答案:

答案 0 :(得分:3)

  

我可以看看为什么会发生这种情况?

您可以查看SourceFile:28,它是com.foo.JawsFileChooser.a的一部分并取消引用null

的引用

编辑: 我已经看到在存在匿名内部类的堆栈跟踪中报告的第一行类。例如以下代码

 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)

答案 1 :(得分:0)

不要总是依赖行号! 即使你这样做,也要看第91行 -

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

答案 2 :(得分:0)

在按钮的actionPerformed(...)方法中,它引用了一个可能不存在(或者可能没有内容)的选择。您是否编写了代码来处理这些条件?如果没有,也许你试图针对空指针进行/验证。