RNetLogo无法在macOS Sierra和Windows

时间:2017-07-28 11:16:09

标签: r windows netlogo macos-sierra rjava

我正在使用macOS Sierra和R版本3.4.1以及java版本" 1.8.0_144"。我正在尝试一个改编自RNetLogo手册的简单示例:

require(RNetLogo)
require(tidyverse)
require(extrafont)
loadfonts()

nl.path <- "/Applications/NetLogo 6.0.1"
NLStart(nl.path)
model.path <- "/models/Sample Models/Earth Science/Fire.nlogo"
absolute.model.path <- paste(nl.path,model.path,sep="")
NLLoadModel(absolute.model.path)

但命令NLLoadModel给出以下错误:

Error in .jcall(nl.obj, "V", "loadModel", .jnew("java/lang/String", model.path)) : 
  RcallMethod: invalid object parameter

在Windows版本1.8中也会出现这种情况。

1 个答案:

答案 0 :(得分:1)

在macOS Sierra中使用Fire.nlogo模型,我找到了两个解决方案(参见RNetLogo手册): 首先,使用gui = FALSE

Sys.setenv(NOAWT=1)
require(RNetLogo)
nl.path <- "/Applications/NetLogo 6.0.1/Java"
nl.path2 <- "/Applications/NetLogo 6.0.1"
NLStart(nl.path, gui=FALSE, nl.jarname='netlogo-6.0.1.jar')
model.path <- "/models/Sample Models/Earth Science/Fire.nlogo"
absolute.model.path <- paste(nl.path2,model.path,sep="")
NLLoadModel(absolute.model.path)
# Fire from manual
NLCommand("setup")
NLDoCommand(10, "go")
burned <- NLReport("burned-trees")
print(burned)
NLQuit()

然后用gui = TRUE:

Sys.setenv(NOAWT=1)
require(JGR)
Sys.unsetenv("NOAWT")
JGR()
# Now using JGR
require(RNetLogo)
nl.path <- "/Applications/NetLogo 6.0.1/Java"
nl.path2 <- "/Applications/NetLogo 6.0.1"
NLStart(nl.path, gui=TRUE, nl.jarname='netlogo-6.0.1.jar')
model.path <- "/models/Sample Models/Earth Science/Fire.nlogo"
absolute.model.path <- paste(nl.path2,model.path,sep="")
NLLoadModel(absolute.model.path)
# Fire from manual
NLCommand("setup")
NLDoCommand(10, "go")
burned <- NLReport("burned-trees")
print(burned)
NLQuit()