java - 代号一代码中的 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。
它不是来自我的代码,我不知道如何解决这个间歇性错误。
请帮我!
解决方案
大多数这些问题是由于竞争条件和违反 EDT 引起的。这意味着您在手动创建或通过以下方式获得的单独线程中对 UI 进行了更改:计时器、网络等。
我们在模拟器中提供了一个 EDT 违规检测工具,您可以启用它。当您在启用此工具的情况下运行时,它将打印可疑违规的堆栈跟踪。请注意,在某些情况下,它可能会产生“误报”,但在这种情况下通常非常好。
推荐阅读
- c# - JSON-config 中的 NLog 默认包装器使用
- angular - Ng build with chunking without the --watch flag 与 nodemon 和 electron 结合使用
- sap-cloud-platform - SAP BTP CF Apps APIs 上的 DOS 攻击缓解/速率限制
- python - 如何使用滚动功能来预测基于简单移动平均线或其他策略的趋势
- visual-c++ - KLR 2 Baru.exe 中 0x00007FF610DE1904 处的未处理异常:0xC0000005:访问冲突读取位置 0x000000BE306C4F20
- node.js - 使用单独集合中的特定文档的引用创建新文档后,如何更新集合中的文档?
- android - 在 docker 容器中运行 Android 模拟器
- windows - 批处理 - 获取标志之间的文本块,输出并遍历所有文件
- c++ - 如何在内存中创建一个虚拟文件并将其用作普通的 FILE 指针?
- c# - 使用通用接口从组合接口模型转换模型?