AnyLogic调用setPreferredSpeed()报this.b为空的问题求助
AnyLogic中调用setPreferredSpeed函数报NullPointerException问题
问题描述
我在AnyLogic模型中尝试用以下代码修改车辆智能体种群的偏好速度:
setPreferredSpeed(10, KPH);
我将这段代码分别放在了三个位置:
- Vehicle智能体内部创建的语句图中
- Vehicle智能体属性面板的「On startup」字段
- Main模块内carMoveTo块的「On enter」字段
但无论放在哪个位置,都会抛出相同的空指针错误:
Cannot invoke "com.anylogic.libraries.road.Car_xjal.setPreferredSpeed(double, com.anylogic.engine.SpeedUnits)" because "this.b" is null
代码补全功能显示可以正常输入该函数,但运行时必定触发错误。例如将代码放在carMoveTo块的「On enter」字段时,完整错误栈如下:
Exception during discrete event execution: Cannot invoke "com.anylogic.libraries.road.Car_xjal.setPreferredSpeed(double)" because "this.b" is null java.lang.NullPointerException: Cannot invoke "com.anylogic.libraries.road.Car_xjal.setPreferredSpeed(double)" because "this.b" is null at com.anylogic.libraries.road.CarExtension.setPreferredSpeed(Unknown Source) at skagway_broadway_test.Main.setPreferredSpeed(Main.java:2116) at skagway_broadway_test.Main._carMoveTo_onEnter_xjal(Main.java:952) at skagway_broadway_test.Main$7.onEnter(Main.java:652) at skagway_broadway_test.Main$7.onEnter(Main.java:1) at com.anylogic.libraries.road.CarMoveTo.a(Unknown Source) at com.anylogic.libraries.road.CarMoveTo$8.onEnter(Unknown Source) at com.anylogic.libraries.processmodeling.Delay.b(Unknown Source) at com.anylogic.libraries.processmodeling.Delay$9.onEnter(Unknown Source) at com.anylogic.libraries.processmodeling.InputBlock$1.b(Unknown Source) at com.anylogic.libraries.processmodeling.InPort.a(Unknown Source) at com.anylogic.libraries.processmodeling.InPort.receiveImmediately(Unknown Source) at com.anylogic.libraries.processmodeling.InputBlock$1.a(Unknown Source) at com.anylogic.libraries.processmodeling.OutPort.a(Unknown Source) at com.anylogic.libraries.processmodeling.OutPort.b(Unknown Source) at com.anylogic.libraries.processmodeling.OutputBlock.forwardReadyEntityNotification(Unknown Source) at com.anylogic.libraries.processmodeling.InputBlock$1.a(Unknown Source) at com.anylogic.libraries.processmodeling.OutPort.a(Unknown Source) at com.anylogic.libraries.processmodeling.OutPort.b(Unknown Source) at com.anylogic.libraries.processmodeling.PlainTransfer$1.a(Unknown Source) at com.anylogic.libraries.processmodeling.OutPort.a(Unknown Source) at com.anylogic.libraries.processmodeling.OutPort.b(Unknown Source) at com.anylogic.libraries.processmodeling.OutPort.a(Unknown Source) at com.anylogic.libraries.processmodeling.OutputBlock.a(Unknown Source) at com.anylogic.libraries.processmodeling.OutputBlock$2.a(Unknown Source) at com.anylogic.libraries.processmodeling.OutputBlock$2.action(Unknown Source) at com.anylogic.libraries.processmodeling.AsynchronousExecutor_xjal$a.execute(Unknown Source) at com.anylogic.engine.LibraryEventHandler$e.execute(Unknown Source) at com.anylogic.engine.Engine.a(Unknown Source) at com.anylogic.engine.Engine.hk(Unknown Source) at com.anylogic.engine.Engine$e.run(Unknown Source)
已尝试的排查步骤
- 参考过同类问题的解决方案,已确认Vehicle智能体的「Use in Flowcharts as Car」选项处于勾选状态,但问题未解决
- 错误触发时机:当Vehicle进入名为「straight」的carMoveTo块时,该块的「On enter」字段中调用了
setPreferredSpeed(60); - carSource块已配置偏好速度,车辆可正常在道路网络生成并进入流程
补充信息
相关设置截图:
希望有人能解释「this.b is null」的具体含义,并提供解决该问题的建议,我可以补充更多模型细节。
内容的提问来源于stack exchange,提问作者Ben
相关产品推荐
相关产品推荐

