首页 > 解决方案 > 代号一代码中的 NullPointException

问题描述

从几天前开始,不知从何而来,我有时会收到此 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: 尝试在 com.codename1.r.an.cj( TextArea.java:1199) 在 com.codename1.r.an.ci(TextArea.java:865) 在 com.codename1.r.an.H(TextArea.java:879) 在 com.codename1.r.an.F (TextArea.java:824) 在 com.codename1.rgba(DefaultLookAndFeel.java:907) 在 com.codename1.r.an.a(TextArea.java:1259) 在 com.codename1.rlJ(Component.java:2942)在 com.codename1.rlK(Component.java:2981) 在 com.codename1.rlaa(Component. java:1340) at com.codename1.rlaf(Component.java:1430) 03-19 09:08:47.786 22799-22820/? W/System.err:在 com.codename1.reab(BorderLayout.java:480) 在 com.codename1.rna(Container.java:2224) 在 com.codename1.rlJ(Component.java:2942) 在 com.codename1。 rlK(Component.java:2981) at com.codename1.rlaa(Component.java:1340) at com.codename1.rlaf(Component.java:1430) at com.codename1.reba(BoxLayout.java:155) at com. codename1.rnbP(Container.java:1715) at com.codename1.rnK(Container.java:1707) at com.codename1.rnbP(Container.java:1720) at com.codename1.rnK(Container.java:1707) at com.codename1.rnbP(Container.java:1720) 在 com.codename1.rnK(Container.java:1707) 在 com.codename1.rn bP(Container.java:1720) 在 com.codename1.rnK(Container.java:1707) 在 com.codename1.rna(Container.java:1606) 在 com.codename1.rva(Form.java:4046) 在 com。 codename1.rlb(Component.java:2214) at com.codename1.rvb(Form.java:4056) at com.codename1.rld(Component.java:2187) at com.codename1.rla(Component.java:2162) 03 -19 09:08:47.787 22799-22820/? W/System.err:在 com.codename1.rld(Component.java:2130) 在 com.codename1.rlc(Component.java:2421) 在 com.codename1.rli(Component.java:2365) 在 com.codename1。 impl.as(CodenameOneImplementation.java:613) at com.codename1.rql(Display.java:1161) at com.codename1.rqk(Display.java:1070) at com.codename1.r.aj.run(RunnableWrapper.java :120) 在 com。

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

请帮我!

标签: javacodenameone

解决方案


大多数这些问题是由于竞争条件和违反 EDT 引起的。这意味着您在手动创建或通过以下方式获得的单独线程中对 UI 进行了更改:计时器、网络等。

我们在模拟器中提供了一个 EDT 违规检测工具,您可以启用它。当您在启用此工具的情况下运行时,它将打印可疑违规的堆栈跟踪。请注意,在某些情况下,它可能会产生“误报”,但在这种情况下通常非常好。


推荐阅读