调用Window.setVisible()时出现空指针异常

3

我有一个重量级的GUI应用程序。每次启动它时,我都会从EventDispatchThread得到以下堆栈跟踪:

14:30:04:115 >> java.lang.NullPointerException
    at com.mercury.ftjadin.support.jfc11.cs.JTableCS$CellEditorListenerRegistrar.addListener(JTableCS.java:151)
    at com.mercury.ftjadin.infra.abstr.ObjectCS.registerListeners(ObjectCS.java:2736)
    at com.mercury.ftjadin.infra.DefaultCustomClassManager.onCreate(DefaultCustomClassManager.java:575)
    at com.mercury.ftjadin.hooks.WToolkitHook.onCreate(WToolkitHook.java:23)
    at java.awt.Toolkit.createComponent(Toolkit.java)
    at java.awt.Component.addNotify(Component.java:6650)
    at java.awt.Container.addNotify(Container.java:2565)
    at javax.swing.JComponent.addNotify(JComponent.java:4693)
    at javax.swing.JTable.addNotify(JTable.java:683)
    at java.awt.Container.addNotify(Container.java:2576)
    at javax.swing.JComponent.addNotify(JComponent.java:4693)
    at java.awt.Container.addNotify(Container.java:2576)
    at javax.swing.JComponent.addNotify(JComponent.java:4693)
    at java.awt.Container.addNotify(Container.java:2576)
    at javax.swing.JComponent.addNotify(JComponent.java:4693)
    at java.awt.Container.addNotify(Container.java:2576)
    at javax.swing.JComponent.addNotify(JComponent.java:4693)
    at java.awt.Container.addNotify(Container.java:2576)
    at javax.swing.JComponent.addNotify(JComponent.java:4693)
    at java.awt.Container.addNotify(Container.java:2576)
    at javax.swing.JComponent.addNotify(JComponent.java:4693)
    at java.awt.Container.addNotify(Container.java:2576)
    at javax.swing.JComponent.addNotify(JComponent.java:4693)
    at java.awt.Container.addNotify(Container.java:2576)
    at javax.swing.JComponent.addNotify(JComponent.java:4693)
    at java.awt.Container.addNotify(Container.java:2576)
    at javax.swing.JComponent.addNotify(JComponent.java:4693)
    at javax.swing.JRootPane.addNotify(JRootPane.java:738)
    at java.awt.Container.addNotify(Container.java:2576)
    at java.awt.Window.addNotify(Window.java:664)
    at java.awt.Frame.addNotify(Frame.java:470)
    at java.awt.Window.show(Window.java:860)
    at java.awt.Component.show(Component.java:1591)
    at java.awt.Component.setVisible(Component.java:1543)
    at java.awt.Window.setVisible(Window.java:843)
    at ... my_classes_stack_trace

我尝试在Java源代码中对其进行调试,以查找我的错误和所需对象是什么null,但由于我没有com.mercury.ftjadin包的源代码,导致我陷入了困境...

顺便说一下,应用程序即使出现此异常也可以正常运行,但无论如何我都想解决这个问题...

有人熟悉这个问题吗?


你可以发布代码吗?也许你有一个循环(在java.awt.Container.addNotify(Container.java:2576)     在javax.swing.JComponent.addNotify(JComponent.java:4693)) - alepuzio
正如我所说,这是一个重量级的GUI应用程序,仅包含数十个类(GUI部分)。问题在于当我编写第一批类时,我完全是Java初学者,可能存在一些糟糕的编程,现在我正在尝试追溯。因此,不,我想发布整个代码是不可能的... - Elist
我会检查GUI中使用的JTableCS,并检查是否存在将监听器添加到其中的任何问题(如果您可以访问它)。 - dARKpRINCE
我无法访问JTableCS源代码。但是该jar包可以在网络上获取到。 - Elist
3个回答

1
这个问题与QTP的Java插件有关。 自从我移除了这个插件后,异常就没有被抛出。

1
尝试
  new window.setVisible(true);

查看窗口完美运行。只有当Window中包含一个com.mercury.ftjadin.support.jfc11.cs.JTableCS实例时,才会偶尔发生此问题。 - Elist
它发生在 frame.setVisible(true); 上。frame 的类继承自 JFrame - Elist
你是指像这样写:class window extends JFrame{}吗? - rachana
不,它是class MyFrame extends java.swing.JFrame {},它又继承了java.awt.Frame extends java.awt.Window... - Elist
然后尝试 new MyFrame.setVisible(true); 我不确定这个。 - rachana

0

检查空对象。

示例:

if(object!=null)
{
  //enter code here
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接