java - 尝试从 bash 运行BehaviorSpace 实验时出错

标签 java xml bash netlogo

我正在 NetLogo 中运行我的模型,它运行良好。当我尝试运行一些在 xml 文件中定义并使用此脚本启动的实验时,发生了奇怪的事情:

java -Xmx4096m -Dfile.encoding=UTF-8 -cp /Applications/NetLogo\ 5.3/Java/netlogo-mac-app.jar org.nlogo.headless.Main --model mymodel.nlogo --setup-file experiments-.25-times-per-day.xml


Exception in thread "main" Expected a constant. at position 0 in 
at org.nlogo.compiler.CompilerExceptionThrowers$.exception(CompilerExceptionThrowers.scala:26)
at org.nlogo.compiler.ConstantParser.readConstantPrefix(ConstantParser.scala:115)
at org.nlogo.compiler.ConstantParser.getConstantValue(ConstantParser.scala:66)
at org.nlogo.compiler.Compiler$$anonfun$readFromString$1.apply(Compiler.scala:92)
at scala.Either$RightProjection.getOrElse(Either.scala:479)
at org.nlogo.compiler.Compiler$.readFromString(Compiler.scala:91)
at org.nlogo.nvm.DefaultCompilerServices.readFromString(DefaultCompilerServices.scala:25)
at org.nlogo.lab.ProtocolLoader$Loader$$anonfun$readEnumeratedValueSetElement$1$1.apply(ProtocolLoader.scala:84)
at org.nlogo.lab.ProtocolLoader$Loader$$anonfun$readEnumeratedValueSetElement$1$1.apply(ProtocolLoader.scala:83)
at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:233)
at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:233)
at scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:59)
at scala.collection.immutable.List.foreach(List.scala:76)
at scala.collection.TraversableLike$class.map(TraversableLike.scala:233)
at scala.collection.immutable.List.map(List.scala:76)
at org.nlogo.lab.ProtocolLoader$Loader.readEnumeratedValueSetElement$1(ProtocolLoader.scala:83)
at org.nlogo.lab.ProtocolLoader$Loader$$anonfun$valueSets$1$1.apply(ProtocolLoader.scala:88)
at org.nlogo.lab.ProtocolLoader$Loader$$anonfun$valueSets$1$1.apply(ProtocolLoader.scala:85)
at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:239)
at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:239)
at scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:59)
at scala.collection.immutable.List.foreach(List.scala:76)
at scala.collection.TraversableLike$class.flatMap(TraversableLike.scala:239)
at scala.collection.immutable.List.flatMap(List.scala:76)
at org.nlogo.lab.ProtocolLoader$Loader.valueSets$1(ProtocolLoader.scala:85)
at org.nlogo.lab.ProtocolLoader$Loader.readProtocolElement(ProtocolLoader.scala:102)
at org.nlogo.lab.ProtocolLoader$Loader$$anonfun$load$1.apply(ProtocolLoader.scala:63)
at org.nlogo.lab.ProtocolLoader$Loader$$anonfun$load$1.apply(ProtocolLoader.scala:63)
at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:233)
at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:233)
at scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:59)
at scala.collection.immutable.List.foreach(List.scala:76)
at scala.collection.TraversableLike$class.map(TraversableLike.scala:233)
at scala.collection.immutable.List.map(List.scala:76)
at org.nlogo.lab.ProtocolLoader$Loader.load(ProtocolLoader.scala:63)
at org.nlogo.lab.ProtocolLoader.loadOne(ProtocolLoader.scala:17)
at org.nlogo.lab.Lab.newWorker(Lab.scala:27)
at org.nlogo.lab.Lab.run(Lab.scala:42)
at org.nlogo.headless.Main$.runExperiment(Main.scala:24)
at org.nlogo.headless.Main$$anonfun$main$1.apply(Main.scala:14)
at org.nlogo.headless.Main$$anonfun$main$1.apply(Main.scala:14)
at scala.Option.foreach(Option.scala:197)
at org.nlogo.headless.Main$.main(Main.scala:14)
at org.nlogo.headless.Main.main(Main.scala)

我不明白从错误消息中查看哪里,因为它没有指向模型的任何特定部分 - 据我所知......

这是我的设置文件的摘录:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE experiments SYSTEM "behaviorspace.dtd">
<experiments>
 <experiment name="india-hagerstrand-one-at-random" repetitions="100" runMetricsEveryStep="false">
    <setup>setup</setup>
    <go>go</go>
    <enumeratedValueSet variable="dataset">
        <value value="&quot;india&quot;"/>
    </enumeratedValueSet>
    <enumeratedValueSet variable="schedule">
        <value value="&quot;one at random&quot;"/>
    </enumeratedValueSet>
    <enumeratedValueSet variable="logic">
        <value value="&quot;hagerstrand&quot;"/>
    </enumeratedValueSet>
    <enumeratedValueSet variable="debug?">
        <value value="false"/>
    </enumeratedValueSet>
    <enumeratedValueSet variable="ticks-in-semester">
        <value value="45"/>
    </enumeratedValueSet>
    <enumeratedValueSet variable="experiment">
        <value value="experiment-.25"/>
    </enumeratedValueSet>
</experiment>
</experiments>

只有当我从 xml 文件加载实验时才会发生错误,否则它会起作用。我已根据 Behaviourspace.dtd 验证了我的 xml,它似乎是正确的。

最佳答案

该错误是由xml代码引起的,具体来说,封装字符串时有一行错误:

<enumeratedValueSet variable="experiment">
    <value value="&quot;experiments-4&quot;"/>
</enumeratedValueSet>

关于java - 尝试从 bash 运行BehaviorSpace 实验时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37425394/

相关文章:

java - 用于更新通知 channel 设置的 Android 通知操作

python - 解析 XSL 上同名的子元素

java - 包含 swagger api 会导致 JBoss EAP 下的 jaxb 提供程序发生冲突

PHP:对 XML 的 AJAX 请求

linux - 登录后运行 bash 脚本

regex - Bash 正则表达式重命名文件

java - 如何通过 gradle 插件强制执行此模式?

java - Java 中的 UI 数据绑定(bind)是否比其值(value)更麻烦?

java - Java中ArrayList的retainAll和removeAll的时间复杂度是多少。

linux - 将多个参数传递给脚本 linux