问题
I currently have a project that I've completed using the netlogo interface.
My project includes multiple .nls files and one of my .nls files use the table extension. I've created a behavior space experiment and named it experiment for simplicity.
I'm trying to run the experiment headless using the following commands in my Netlogo application's directory where the Netlogo.jar is located.
java -Xmx1024m -Dfile.encoding=UTF-8 -cp ./Netlogo.jar org.nlogo.headless.Main --model /path/to/file/experiment.nlogo --experiment experiment --table /path/to/output/table-output.csv --spreadsheet /path/to/output/spreadsheet-output.csv
I'm getting the following error. It seems that I can't detect my extension from the .nls file. How can this be fixed?
Exception in thread "main" Nothing named TABLE:PUT has been defined at position 895 in
at org.nlogo.compiler.CompilerExceptionThrowers$.exception(CompilerExceptionThrowers.scala:26)
at org.nlogo.compiler.IdentifierParser.org$nlogo$compiler$IdentifierParser$$getAgentVariableReporter(IdentifierParser.scala:107)
at org.nlogo.compiler.IdentifierParser$$anonfun$processToken2$2.apply(IdentifierParser.scala:75)
at org.nlogo.compiler.IdentifierParser$$anonfun$processToken2$2.apply(IdentifierParser.scala:68)
at scala.Option.getOrElse(Option.scala:108)
at org.nlogo.compiler.IdentifierParser.processToken2(IdentifierParser.scala:68)
at org.nlogo.compiler.IdentifierParser.processToken$1(IdentifierParser.scala:31)
at org.nlogo.compiler.IdentifierParser$$anonfun$process$1.apply(IdentifierParser.scala:34)
at org.nlogo.compiler.IdentifierParser$$anonfun$process$1.apply(IdentifierParser.scala:34)
at scala.collection.Iterator$$anon$19.next(Iterator.scala:401)
at scala.collection.Iterator$class.toStream(Iterator.scala:1181)
at scala.collection.Iterator$$anon$19.toStream(Iterator.scala:399)
at scala.collection.Iterator$$anonfun$toStream$1.apply(Iterator.scala:1181)
at scala.collection.Iterator$$anonfun$toStream$1.apply(Iterator.scala:1181)
at scala.collection.immutable.Stream$Cons.tail(Stream.scala:1060)
at scala.collection.immutable.Stream$Cons.tail(Stream.scala:1052)
at scala.collection.immutable.StreamIterator$$anonfun$next$1.apply(Stream.scala:952)
at scala.collection.immutable.StreamIterator$$anonfun$next$1.apply(Stream.scala:952)
at scala.collection.immutable.StreamIterator$LazyCell.v(Stream.scala:941)
at scala.collection.immutable.StreamIterator.hasNext(Stream.scala:946)
at scala.collection.Iterator$class.isEmpty(Iterator.scala:329)
at scala.collection.immutable.StreamIterator.isEmpty(Stream.scala:933)
at scala.collection.immutable.StreamIterator.next(Stream.scala:948)
at scala.collection.Iterator$$anon$2.next(Iterator.scala:898)
at scala.collection.Iterator$$anon$2.head(Iterator.scala:885)
at org.nlogo.compiler.ExpressionParser.recurse$1(ExpressionParser.scala:474)
at org.nlogo.compiler.ExpressionParser.delayBlock(ExpressionParser.scala:479)
at org.nlogo.compiler.ExpressionParser.parseExpressionInternal(ExpressionParser.scala:339)
at org.nlogo.compiler.ExpressionParser.org$nlogo$compiler$ExpressionParser$$parseArgExpression(ExpressionParser.scala:290)
at org.nlogo.compiler.ExpressionParser$$anonfun$parseArguments$1.apply$mcVI$sp(ExpressionParser.scala:96)
at scala.collection.immutable.Range.foreach$mVc$sp(Range.scala:81)
at org.nlogo.compiler.ExpressionParser.parseArguments(ExpressionParser.scala:95)
at org.nlogo.compiler.ExpressionParser.parseStatement(ExpressionParser.scala:80)
at org.nlogo.compiler.ExpressionParser.parse(ExpressionParser.scala:55)
at org.nlogo.compiler.CompilerMain$$anonfun$compile$1.apply(CompilerMain.scala:34)
at org.nlogo.compiler.CompilerMain$$anonfun$compile$1.apply(CompilerMain.scala:29)
at scala.collection.Iterator$class.foreach(Iterator.scala:772)
at scala.collection.JavaConversions$JIteratorWrapper.foreach(JavaConversions.scala:573)
at scala.collection.IterableLike$class.foreach(IterableLike.scala:73)
at scala.collection.JavaConversions$JCollectionWrapper.foreach(JavaConversions.scala:592)
at org.nlogo.compiler.CompilerMain$.compile(CompilerMain.scala:29)
at org.nlogo.compiler.Compiler$.compileProgram(Compiler.scala:28)
at org.nlogo.headless.HeadlessModelOpener.openFromMap(HeadlessModelOpener.scala:53)
at org.nlogo.headless.HeadlessWorkspace.openString(HeadlessWorkspace.scala:531)
at org.nlogo.headless.HeadlessWorkspace.open(HeadlessWorkspace.scala:513)
at org.nlogo.headless.Main$.newWorkspace$1(Main.scala:19)
at org.nlogo.headless.Main$$anonfun$runExperiment$1.apply(Main.scala:24)
at org.nlogo.headless.Main$$anonfun$runExperiment$1.apply(Main.scala:24)
at org.nlogo.lab.Lab$$anonfun$1.apply(Lab.scala:33)
at org.nlogo.lab.Lab$$anonfun$1.apply(Lab.scala:33)
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.immutable.Range.foreach(Range.scala:78)
at scala.collection.TraversableLike$class.map(TraversableLike.scala:233)
at scala.collection.immutable.Range.map(Range.scala:46)
at org.nlogo.lab.Lab.run(Lab.scala:33)
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)
回答1:
It seems that the .nlogo file must contain the extension declaration rather than the .nls file.
来源:https://stackoverflow.com/questions/34366890/headless-behavior-space-with-table-extension