首页 > 解决方案 > 在 AnyLogic 中为代理创建文本文件时出现 NullPointerExection 错误

问题描述

我创建了一个代理,然后将 Connectivity 托盘中的一个文本文件放入该代理模型中。一旦我运行模拟,它就会显示 NullPointerException 错误。在控制台中显示未知来源。尽管我在此之前已经创建了该文件并从属性托盘中放置了该文件的位置。我正在使用 AnyLogic 7 专业版。

  1. 错误窗口

  2. 日志 :

    模型启动期间出错:com.xj.anylogic.engine.Agent.getPresentation(Unknown Source) at com.xj.anylogic.engine.connectivity.TextFile.(Unknown Source) at com.xj.anylogic 的 NullPointerException java.lang.NullPointerException .engine.connectivity.TextFile.(Unknown Source) at warehouse.Worker.(Worker.java:71) at warehouse.Main._unloadingPerson_newUnit_xjal(Main.java:5246) at warehouse.Main.access$6(Main.java:5244)在warehouse.Main$7.newUnit(Main.java:1773) 在com.xj.anylogic.libraries.processmodeling.ResourcePool.a(未知来源) 在com.xj.anylogic.libraries.processmodeling.ResourcePool$ba(未知来源)在 com.xj.anylogic.libraries.processmodeling.ResourcePool.X(Unknown Source) 在 com.xj.anylogic.libraries.processmodeling.ResourcePool.onStartup(Unknown Source) 在 com.xj.anylogic.libraries.processmodeling.ResourcePool。在 com.xj.anylogic.engine.Engine.start(Unknown Source) at com.xj.anylogic.engine.ExperimentSimulation.b (Unknown Source) 的仓库.Main.start(Main.java:12747) 开始(未知来源)在 com.xj.anylogic.engine.ExperimentSimulation.run(Unknown Source) at warehouse.Simulation.executeShapeControlAction(Simulation.java:127)

  3. 文本文件的属性窗口

我不知道我做错了什么。 注意:当我将相同的文本文件放入主代理模型时,不会发生此错误。

更新:我找到了一种解决方法。我将代理与主代理链接,然后将文件放入主代理中。之后,我从代理函数中调用了该文件。据我了解,我认为除了主要代理之外,其他代理无法创建连接对象。不过我不确定。

标签: javasimulationanylogicagent

解决方案


由于您在将相同的文本文件放在 main 上时表明它正在工作,因此可能是在代理访问文件之前创建代理的情况......

这里有一些选项和检查

检查 1:确保该文件可在数据文件夹下的项目的资源部分中访问。它不应该变灰并在左侧有一个绿点。

在此处输入图像描述

检查 2:您放置它的代理内的文件对象中的文件名旁边也应该有一个绿点。

在此处输入图像描述

备选方案 1:使用代理内部的参数将 main 上存在的文本文件传递给代理以使用它

在此处输入图像描述

在此处输入图像描述

备选方案 2:如果您的代理位于 main 上,您可以直接从代理访问 main 上的文本文件。

在此处输入图像描述

注意:我认为让每个代理从他们自己内部访问完全相同的文本文件是不明智的。最好他们都访问同一个文件对象


推荐阅读