当我尝试将可运行队列传递给SwingUtilities.invokeLater
时,我收到了一个间歇性抛出的异常,大约每执行一次应用程序中的一次。它似乎只发生在应用程序启动时,也许在事件调度线程正确设置之前?我不太确定,但如果应用程序正常运行,那么在此之后我就没有任何问题了。这里是例外:为什么SwingUtilities.invokeLater会抛出一个NullPointerException?
Exception in thread "Thread-3" java.lang.NullPointerException
at java.awt.EventQueue.invokeLater(Unknown Source)
at javax.swing.SwingUtilities.invokeLater(Unknown Source)
at com.mypackage.MyClass.myMethod(MyClass.java:126)
我不知道为什么SwingUtilities.invokeLater
的电话会这样死去。必须有一些愚蠢的事情发生。作为参考,这里是MyClass.java
实际的源代码:
118: public void myMethod(final VariableA variableA, final VariableB variableB, final VariableC variableC) {
119: if (variableA == null)
120: throw new NullPointerException("no variable A");
121: if (variableB == null)
122: throw new NullPointerException("no variable B");
123: if (variableC == null)
124: throw new NullPointerException("no variable C");
125:
126: SwingUtilities.invokeLater(new Runnable() {
127: @Override
128: public void run() {
129: MyClass.this.processMyMethod(variableA, variableB, variableC);
130: });
131: }
132: }
任何这里的想法可能会造成什么呢?
你是从构造函数调用这个方法吗?在这种情况下,MyClass.this可能为空。 –
不知道这是否会有所帮助,但是你可以发布'processMyMethod()'吗? –
@GáborBakos这是一个很好的观点。 –