为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

喵喵时光机 2022-08-17 16:41:01
自从几天前和无处不在以来,我有时会得到这个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=它不是来自我的代码,我不知道如何解决这个间歇性错误。
查看完整描述

3 回答

?
Smart猫小萌

TA贡献1911条经验 获得超7个赞

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

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


查看完整回答
反对 回复 2022-08-17
?
翻阅古今

TA贡献1780条经验 获得超5个赞

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

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


查看完整回答
反对 回复 2022-08-17
?
慕娘9325324

TA贡献1783条经验 获得超4个赞

更新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#L1199

rowStrings 是一个实例成员,但它不是最终成员,也不是受锁定保护的成员。

Shai Almog在他的回答中指出:任何对TextArea的操纵都应该发生在EDT上。TextArea 作为 UI 组件,不需要担心并发性。


查看完整回答
反对 回复 2022-08-17
  • 3 回答
  • 0 关注
  • 123 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信