我已经安装了时间扩展,但是我的代码可以设置但无法运行。我尝试过的示例模型也是如此。我收到的错误消息如下。谢谢你的帮助! 附言:我正在运行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)
答案 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版本。