空点来自代号一代码的区别

自从几天前和无处不在以来,我有时会得到这个NullPointException错误:


异常:java.lang.NullPointerException - 尝试在空对象引用 03-19 09:08:47.785 22799-22820/上调用虚拟方法 'boolean java.util.ArrayList.add(java.lang.Object)'W/System.err: java.lang.NullPointerException: 尝试调用虚拟方法 'boolean java.util.ArrayList.add(java.lang.Object)' on a null object reference at com.codename1.r.an.cj(TextArea.java:1199) at com.codename1.r.an.ci(TextArea.java:865) at com.codename1.r.an.H(TextArea.java:879) at com.codename1.r.an.F(TextArea.java:824) at com.codename1.r.g.b.a(DefaultLookAndFeel.java:907) at com.codename1.r.an.a(TextArea.java:1259) at com.codename1.r.l.J(Component.java:2942) atcom.codename1.r.l.K(Component.java:2981) at com.codename1.r.l.aa(Component.java:1340) at com.codename1.r.l.af(Component.java:1430) 03-19 09:08:47.786 22799-22820/?W/System.err: at com.codename1.r.e.a.b(BorderLayout.java:480) at com.codename1.r.n.a(Container.java:2224) at com.codename1.r.l.J(Component.java:2942) at com.codename1.r.l.K(Component.java:2981) at com.codename1.r.l.aa(Component.java :1340) at com.codename1.r.l.af(Component.java:1430) at com.codename1.r.e.b.a(BoxLayout.java:155) at com.codename1.r.n.bP(Container.java:1715) at com.codename1.r.n.K(Container.java:1707) at com.codename1.r.n.bP(Container.java:1720) atcom.codename1.r.n.K(Container.java:1707) at com.codename1.r.n.bP(Container.java:1720) at com.codename1.r.n.K(Container.java:1707) at com.codename1.r.n.bP(Container.java:1720) at com.codename1.r.n.K(Container.java:1707) at com.codename1.r.n .a(Container.java:1606) at com.codename1.r.v.a(Form.java:4046) at com.codename1.r.l.b(Component.java:2214) at com.codename1.r.v.b(Form.java:4056) at com.codename1.r.l.d=


它不是来自我的代码,我不知道如何解决这个间歇性错误。


喵喵时光机
浏览 124回答 3
3回答

Smart猫小萌

这些问题中的大多数都是由于争用条件和违反 EDT 而发生的。这意味着您在手动创建或通过以下方式获取的单独线程中对UI进行了更改:计时器,网络等。我们在模拟器中提供了一个EDT违规检测工具,您可以启用该工具。当您在启用此工具的情况下运行时,它将打印可疑违规的堆栈跟踪。请注意,在某些情况下,它可能会产生“误报”,但在这种情况下通常非常好。

翻阅古今

这些问题中的大多数都是由于争用条件和违反 EDT 而发生的。这意味着您在手动创建或通过以下方式获取的单独线程中对UI进行了更改:计时器,网络等。我们在模拟器中提供了一个EDT违规检测工具,您可以启用该工具。当您在启用此工具的情况下运行时,它将打印可疑违规的堆栈跟踪。请注意,在某些情况下,它可能会产生“误报”,但在这种情况下通常非常好。

慕娘9325324

更新TextArea 是一个 UI 组件,因此所有交互都应在 codenameOne 事件调度线程 (EDT) 上进行。在 TextArea 的 codenameone 主文件中,变量在方法内部声明,并且具有调用 preced,因此它不是 null。所以罪魁祸首似乎是.rowTextrowStrings.add(rowText)堆栈跟踪报告位置:https://github.com/codenameone/CodenameOne/blob/master/CodenameOne/src/com/codename1/ui/TextArea.java#L1199rowStrings 是一个实例成员,但它不是最终成员,也不是受锁定保护的成员。Shai Almog在他的回答中指出:任何对TextArea的操纵都应该发生在EDT上。TextArea 作为 UI 组件,不需要担心并发性。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java