Netlogo:时间范围内的内部错误

时间:2019-05-21 16:01:01

标签: netlogo

我已经安装了时间扩展,但是我的代码可以设置但无法运行。我尝试过的示例模型也是如此。我收到的错误消息如下。谢谢你的帮助! 附言:我正在运行NetLogo 6.0.4版。

NetLogo is unable to supply you with more details about this error.  
Please report the problem at https://github.com/NetLogo/NetLogo/issues, 
or to bugs@ccl.northwestern.edu, and paste the 
contents of this window into your report

java.lang.IllegalAccessError: tried to access field 
org.nlogo.agent.World.tickCounter from class time.datatypes.LogoSchedule
at time.datatypes.LogoSchedule.getTickCounter(LogoSchedule.java:135)
at time.datatypes.LogoSchedule.performScheduledTasks(LogoSchedule.java:156)
at time.primitives.DiscreteEventSchedulerPrimitives$GoUntil.perform(DiscreteEventSchedulerPrimitives.java:95)
 at org.nlogo.prim._extern.perform(_extern.java:36)
 at org.nlogo.nvm.Context.stepConcurrent(Context.java:107)
 at org.nlogo.nvm.ConcurrentJob.step(ConcurrentJob.scala:65)
 at org.nlogo.job.JobThread.runPrimaryJobs(JobThread.scala:133)
 at org.nlogo.job.JobThread.$anonfun$run$1(JobThread.scala:68)
 at 
 scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)
 at scala.util.control.Exception$Catch.apply(Exception.scala:224)
 at org.nlogo.api.Exceptions$.handling(Exceptions.scala:41)
 at org.nlogo.job.JobThread.run(JobThread.scala:66)

2 个答案:

答案 0 :(得分:3)

我对我的回答没有信心;但是,

如果您查看代码(2017年1月14日更新)(https://github.com/colinsheppard/time/blob/master/src/main/java/time/datatypes/LogoSchedule.java):

 TickCounter getTickCounter(ExtensionContext context){
            if(tickCounter==null){
                tickCounter = context.workspace().world().tickCounter;          
            }           
            return tickCounter;         
}

我们看到计时器正在获取工作空间的世界的tickCounter。

如果我们查看netlogo网站上的更新(https://ccl.northwestern.edu/netlogo/docs/transition.html),则会看到:

  

在NetLogo 6.0中,我们的目标之一就是使开发更容易   扩展,易于开发功能更强大的扩展。为此,   我们已经将扩展API从5.0提升到了6.0。现有扩展   将需要重新编译以更改“ NetLogo-Extension-API-Version”中的   他们罐子的MANIFEST.MF从5.0到6.0。

     

我们对扩展程序API所做的一些更改包括:

     

org.nlogo.api.Context现在允许访问当前世界,并且   工作空间对象,而无需强制转换为   org.nlogo.nvm.ExtensionContext。 org.nlogo.api.Workspace已被   作为稳定的API引入,可供扩展使用。 NetLogo罐   现在可从BinTray获得。有关5.0之间的完整更改列表   和6.0,请访问我们在GitHub上的扩展过渡指南。

话虽如此,我认为计时器扩展的源代码尚未完成迁移以适应新的更新。您可以看到它明确提到了ExtensionContext。

不幸的是,我相信解决方案是更新计时器源代码并提交。

答案 1 :(得分:3)

恐怕我无法从发布的错误声明中分辨出问题所在。由于NetLogo开发团队正在对其进行更新,以使其包含在将来的NetLogo版本中,因此时间的延长正在不断变化。但是他们还没有完成,而且并不是所有的错误都可以解决。

我在https://github.com/colinsheppard/time使用Colin Sheppard的版本 除离散事件模拟原语外,它一直是可靠的。日期/时间实用程序和时间序列工具可以工作,但是我们知道离散事件计划在NetLogo 6.x下不起作用。如果您想使用离散事件计划,恐怕您需要耐心等待NetLogo项目的版本完全调试好。

我在这里暂时放置了一个相当全面的示例代码: http://langrailsback.com/file-transfers/ 它包括扩展的Colin版本。