ropensci / nlrx

nlrx NetLogo R
https://docs.ropensci.org/nlrx
GNU General Public License v3.0
77 stars 12 forks source link

Encountered 'Can't find extension: csv' error while running the NetLogo model #98

Open Kejian2023 opened 4 months ago

Kejian2023 commented 4 months ago

When I perform calibration, I encounter an error even though I have installed the CSV extension for NetLogo.

results <- nlrx::run_nl_all(nl = nl, split = 2) Exception in thread "main" Can't find extension: csv at position 12 in at org.nlogo.core.ErrorSource.signalError(ErrorSource.scala:11) at org.nlogo.workspace.ExtensionManager.importExtension(ExtensionManager.scala:180) at org.nlogo.parse.StructureParser$.$anonfun$parsingWithExtensions$1(StructureParser.scala:74) at org.nlogo.parse.StructureParser$.$anonfun$parsingWithExtensions$1$adapted(StructureParser.scala:68) at scala.collection.immutable.List.foreach(List.scala:431) at org.nlogo.parse.StructureParser$.parsingWithExtensions(StructureParser.scala:68) at org.nlogo.parse.StructureParser$.parseSources(StructureParser.scala:33) at org.nlogo.parse.NetLogoParser.basicParse(NetLogoParser.scala:17) at org.nlogo.parse.NetLogoParser.basicParse$(NetLogoParser.scala:15) at org.nlogo.parse.FrontEnd$.basicParse(FrontEnd.scala:10) at org.nlogo.parse.FrontEndMain.frontEnd(FrontEnd.scala:26) at org.nlogo.parse.FrontEndMain.frontEnd$(FrontEnd.scala:25) at org.nlogo.parse.FrontEnd$.frontEnd(FrontEnd.scala:10) at org.nlogo.compile.CompilerMain$.compile(CompilerMain.scala:47) at org.nlogo.compile.Compiler.compileProgram(Compiler.scala:54) at org.nlogo.headless.HeadlessModelOpener.openFromModel(HeadlessModelOpener.scala:50) at org.nlogo.headless.HeadlessWorkspace.openModel(HeadlessWorkspace.scala:535) at org.nlogo.headless.HeadlessWorkspace.open(HeadlessWorkspace.scala:502) at org.nlogo.api.Controllable.open(Controllable.scala:19) at org.nlogo.headless.Main$.newWorkspace$1(Main.scala:20) at org.nlogo.headless.Main$.runExperiment(Main.scala:24) at org.nlogo.headless.Main$.$anonfun$main$1(Main.scala:14) at org.nlogo.headless.Main$.$anonfun$main$1$adapted(Main.scala:14) at scala.Option.foreach(Option.scala:407) at org.nlogo.headless.Main$.main(Main.scala:14) at org.nlogo.headless.Main.main(Main.scala) Exception in thread "main" Can't find extension: csv at position 12 in at org.nlogo.core.ErrorSource.signalError(ErrorSource.scala:11) at org.nlogo.workspace.ExtensionManager.importExtension(ExtensionManager.scala:180) at org.nlogo.parse.StructureParser$.$anonfun$parsingWithExtensions$1(StructureParser.scala:74) at org.nlogo.parse.StructureParser$.$anonfun$parsingWithExtensions$1$adapted(StructureParser.scala:68) at scala.collection.immutable.List.foreach(List.scala:431) at org.nlogo.parse.StructureParser$.parsingWithExtensions(StructureParser.scala:68) at org.nlogo.parse.StructureParser$.parseSources(StructureParser.scala:33) at org.nlogo.parse.NetLogoParser.basicParse(NetLogoParser.scala:17) at org.nlogo.parse.NetLogoParser.basicParse$(NetLogoParser.scala:15) at org.nlogo.parse.FrontEnd$.basicParse(FrontEnd.scala:10) at org.nlogo.parse.FrontEndMain.frontEnd(FrontEnd.scala:26) at org.nlogo.parse.FrontEndMain.frontEnd$(FrontEnd.scala:25) at org.nlogo.parse.FrontEnd$.frontEnd(FrontEnd.scala:10) at org.nlogo.compile.CompilerMain$.compile(CompilerMain.scala:47) at org.nlogo.compile.Compiler.compileProgram(Compiler.scala:54) at org.nlogo.headless.HeadlessModelOpener.openFromModel(HeadlessModelOpener.scala:50) at org.nlogo.headless.HeadlessWorkspace.openModel(HeadlessWorkspace.scala:535) at org.nlogo.headless.HeadlessWorkspace.open(HeadlessWorkspace.scala:502) at org.nlogo.api.Controllable.open(Controllable.scala:19) at org.nlogo.headless.Main$.newWorkspace$1(Main.scala:20) at org.nlogo.headless.Main$.runExperiment(Main.scala:24) at org.nlogo.headless.Main$.$anonfun$main$1(Main.scala:14) at org.nlogo.headless.Main$.$anonfun$main$1$adapted(Main.scala:14) at scala.Option.foreach(Option.scala:407) at org.nlogo.headless.Main$.main(Main.scala:14) at org.nlogo.headless.Main.main(Main.scala) Exception in thread "main" Can't find extension: csv at position 12 in at org.nlogo.core.ErrorSource.signalError(ErrorSource.scala:11) at org.nlogo.workspace.ExtensionManager.importExtension(ExtensionManager.scala:180) at org.nlogo.parse.StructureParser$.$anonfun$parsingWithExtensions$1(StructureParser.scala:74) at org.nlogo.parse.StructureParser$.$anonfun$parsingWithExtensions$1$adapted(StructureParser.scala:68) at scala.collection.immutable.List.foreach(List.scala:431) at org.nlogo.parse.StructureParser$.parsingWithExtensions(StructureParser.scala:68) at org.nlogo.parse.StructureParser$.parseSources(StructureParser.scala:33) at org.nlogo.parse.NetLogoParser.basicParse(NetLogoParser.scala:17) at org.nlogo.parse.NetLogoParser.basicParse$(NetLogoParser.scala:15) at org.nlogo.parse.FrontEnd$.basicParse(FrontEnd.scala:10) at org.nlogo.parse.FrontEndMain.frontEnd(FrontEnd.scala:26) at org.nlogo.parse.FrontEndMain.frontEnd$(FrontEnd.scala:25) at org.nlogo.parse.FrontEnd$.frontEnd(FrontEnd.scala:10) at org.nlogo.compile.CompilerMain$.compile(CompilerMain.scala:47) at org.nlogo.compile.Compiler.compileProgram(Compiler.scala:54) at org.nlogo.headless.HeadlessModelOpener.openFromModel(HeadlessModelOpener.scala:50) at org.nlogo.headless.HeadlessWorkspace.openModel(HeadlessWorkspace.scala:535) at org.nlogo.headless.HeadlessWorkspace.open(HeadlessWorkspace.scala:502) at org.nlogo.api.Controllable.open(Controllable.scala:19) at org.nlogo.headless.Main$.newWorkspace$1(Main.scala:20) at org.nlogo.headless.Main$.runExperiment(Main.scala:24) at org.nlogo.headless.Main$.$anonfun$main$1(Main.scala:14) at org.nlogo.headless.Main$.$anonfun$main$1$adapted(Main.scala:14) at scala.Option.foreach(Option.scala:407) at org.nlogo.headless.Main$.main(Main.scala:14) at org.nlogo.headless.Main.main(Main.scala) Exception in thread "main" Can't find extension: csv at position 12 in at org.nlogo.core.ErrorSource.signalError(ErrorSource.scala:11) at org.nlogo.workspace.ExtensionManager.importExtension(ExtensionManager.scala:180) at org.nlogo.parse.StructureParser$.$anonfun$parsingWithExtensions$1(StructureParser.scala:74) at org.nlogo.parse.StructureParser$.$anonfun$parsingWithExtensions$1$adapted(StructureParser.scala:68) at scala.collection.immutable.List.foreach(List.scala:431) at org.nlogo.parse.StructureParser$.parsingWithExtensions(StructureParser.scala:68) at org.nlogo.parse.StructureParser$.parseSources(StructureParser.scala:33) at org.nlogo.parse.NetLogoParser.basicParse(NetLogoParser.scala:17) at org.nlogo.parse.NetLogoParser.basicParse$(NetLogoParser.scala:15) at org.nlogo.parse.FrontEnd$.basicParse(FrontEnd.scala:10) at org.nlogo.parse.FrontEndMain.frontEnd(FrontEnd.scala:26) at org.nlogo.parse.FrontEndMain.frontEnd$(FrontEnd.scala:25) at org.nlogo.parse.FrontEnd$.frontEnd(FrontEnd.scala:10) at org.nlogo.compile.CompilerMain$.compile(CompilerMain.scala:47) at org.nlogo.compile.Compiler.compileProgram(Compiler.scala:54) at org.nlogo.headless.HeadlessModelOpener.openFromModel(HeadlessModelOpener.scala:50) at org.nlogo.headless.HeadlessWorkspace.openModel(HeadlessWorkspace.scala:535) at org.nlogo.headless.HeadlessWorkspace.open(HeadlessWorkspace.scala:502) at org.nlogo.api.Controllable.open(Controllable.scala:19) at org.nlogo.headless.Main$.newWorkspace$1(Main.scala:20) at org.nlogo.headless.Main$.runExperiment(Main.scala:24) at org.nlogo.headless.Main$.$anonfun$main$1(Main.scala:14) at org.nlogo.headless.Main$.$anonfun$main$1$adapted(Main.scala:14) at scala.Option.foreach(Option.scala:407) at org.nlogo.headless.Main$.main(Main.scala:14) at org.nlogo.headless.Main.main(Main.scala) Exception in thread "main" Can't find extension: csv at position 12 in at org.nlogo.core.ErrorSource.signalError(ErrorSource.scala:11) at org.nlogo.workspace.ExtensionManager.importExtension(ExtensionManager.scala:180) at org.nlogo.parse.StructureParser$.$anonfun$parsingWithExtensions$1(StructureParser.scala:74) at org.nlogo.parse.StructureParser$.$anonfun$parsingWithExtensions$1$adapted(StructureParser.scala:68) at scala.collection.immutable.List.foreach(List.scala:431) at org.nlogo.parse.StructureParser$.parsingWithExtensions(StructureParser.scala:68) at org.nlogo.parse.StructureParser$.parseSources(StructureParser.scala:33) at org.nlogo.parse.NetLogoParser.basicParse(NetLogoParser.scala:17) at org.nlogo.parse.NetLogoParser.basicParse$(NetLogoParser.scala:15) at org.nlogo.parse.FrontEnd$.basicParse(FrontEnd.scala:10) at org.nlogo.parse.FrontEndMain.frontEnd(FrontEnd.scala:26) at org.nlogo.parse.FrontEndMain.frontEnd$(FrontEnd.scala:25) at org.nlogo.parse.FrontEnd$.frontEnd(FrontEnd.scala:10) at org.nlogo.compile.CompilerMain$.compile(CompilerMain.scala:47) at org.nlogo.compile.Compiler.compileProgram(Compiler.scala:54) at org.nlogo.headless.HeadlessModelOpener.openFromModel(HeadlessModelOpener.scala:50) at org.nlogo.headless.HeadlessWorkspace.openModel(HeadlessWorkspace.scala:535) at org.nlogo.headless.HeadlessWorkspace.open(HeadlessWorkspace.scala:502) at org.nlogo.api.Controllable.open(Controllable.scala:19) at org.nlogo.headless.Main$.newWorkspace$1(Main.scala:20) at org.nlogo.headless.Main$.runExperiment(Main.scala:24) at org.nlogo.headless.Main$.$anonfun$main$1(Main.scala:14) at org.nlogo.headless.Main$.$anonfun$main$1$adapted(Main.scala:14) at scala.Option.foreach(Option.scala:407) at org.nlogo.headless.Main$.main(Main.scala:14) at org.nlogo.headless.Main.main(Main.scala) Exception in thread "main" Can't find extension: csv at position 12 in at org.nlogo.core.ErrorSource.signalError(ErrorSource.scala:11) at org.nlogo.workspace.ExtensionManager.importExtension(ExtensionManager.scala:180) at org.nlogo.parse.StructureParser$.$anonfun$parsingWithExtensions$1(StructureParser.scala:74) at org.nlogo.parse.StructureParser$.$anonfun$parsingWithExtensions$1$adapted(StructureParser.scala:68) at scala.collection.immutable.List.foreach(List.scala:431) at org.nlogo.parse.StructureParser$.parsingWithExtensions(StructureParser.scala:68) at org.nlogo.parse.StructureParser$.parseSources(StructureParser.scala:33) at org.nlogo.parse.NetLogoParser.basicParse(NetLogoParser.scala:17) at org.nlogo.parse.NetLogoParser.basicParse$(NetLogoParser.scala:15) at org.nlogo.parse.FrontEnd$.basicParse(FrontEnd.scala:10) at org.nlogo.parse.FrontEndMain.frontEnd(FrontEnd.scala:26) at org.nlogo.parse.FrontEndMain.frontEnd$(FrontEnd.scala:25) at org.nlogo.parse.FrontEnd$.frontEnd(FrontEnd.scala:10) at org.nlogo.compile.CompilerMain$.compile(CompilerMain.scala:47) at org.nlogo.compile.Compiler.compileProgram(Compiler.scala:54) at org.nlogo.headless.HeadlessModelOpener.openFromModel(HeadlessModelOpener.scala:50) at org.nlogo.headless.HeadlessWorkspace.openModel(HeadlessWorkspace.scala:535) at org.nlogo.headless.HeadlessWorkspace.open(HeadlessWorkspace.scala:502) at org.nlogo.api.Controllable.open(Controllable.scala:19) at org.nlogo.headless.Main$.newWorkspace$1(Main.scala:20) at org.nlogo.headless.Main$.runExperiment(Main.scala:24) at org.nlogo.headless.Main$.$anonfun$main$1(Main.scala:14) at org.nlogo.headless.Main$.$anonfun$main$1$adapted(Main.scala:14) at scala.Option.foreach(Option.scala:407) at org.nlogo.headless.Main$.main(Main.scala:14) at org.nlogo.headless.Main.main(Main.scala) Exception in thread "main" Can't find extension: csv at position 12 in at org.nlogo.core.ErrorSource.signalError(ErrorSource.scala:11) at org.nlogo.workspace.ExtensionManager.importExtension(ExtensionManager.scala:180) at org.nlogo.parse.StructureParser$.$anonfun$parsingWithExtensions$1(StructureParser.scala:74) at org.nlogo.parse.StructureParser$.$anonfun$parsingWithExtensions$1$adapted(StructureParser.scala:68) at scala.collection.immutable.List.foreach(List.scala:431) at org.nlogo.parse.StructureParser$.parsingWithExtensions(StructureParser.scala:68) at org.nlogo.parse.StructureParser$.parseSources(StructureParser.scala:33) at org.nlogo.parse.NetLogoParser.basicParse(NetLogoParser.scala:17) at org.nlogo.parse.NetLogoParser.basicParse$(NetLogoParser.scala:15) at org.nlogo.parse.FrontEnd$.basicParse(FrontEnd.scala:10) at org.nlogo.parse.FrontEndMain.frontEnd(FrontEnd.scala:26) at org.nlogo.parse.FrontEndMain.frontEnd$(FrontEnd.scala:25) at org.nlogo.parse.FrontEnd$.frontEnd(FrontEnd.scala:10) at org.nlogo.compile.CompilerMain$.compile(CompilerMain.scala:47) at org.nlogo.compile.Compiler.compileProgram(Compiler.scala:54) at org.nlogo.headless.HeadlessModelOpener.openFromModel(HeadlessModelOpener.scala:50) at org.nlogo.headless.HeadlessWorkspace.openModel(HeadlessWorkspace.scala:535) at org.nlogo.headless.HeadlessWorkspace.open(HeadlessWorkspace.scala:502) at org.nlogo.api.Controllable.open(Controllable.scala:19) at org.nlogo.headless.Main$.newWorkspace$1(Main.scala:20) at org.nlogo.headless.Main$.runExperiment(Main.scala:24) at org.nlogo.headless.Main$.$anonfun$main$1(Main.scala:14) at org.nlogo.headless.Main$.$anonfun$main$1$adapted(Main.scala:14) at scala.Option.foreach(Option.scala:407) at org.nlogo.headless.Main$.main(Main.scala:14) at org.nlogo.headless.Main.main(Main.scala) Exception in thread "main" Can't find extension: csv at position 12 in at org.nlogo.core.ErrorSource.signalError(ErrorSource.scala:11) at org.nlogo.workspace.ExtensionManager.importExtension(ExtensionManager.scala:180) at org.nlogo.parse.StructureParser$.$anonfun$parsingWithExtensions$1(StructureParser.scala:74) at org.nlogo.parse.StructureParser$.$anonfun$parsingWithExtensions$1$adapted(StructureParser.scala:68) at scala.collection.immutable.List.foreach(List.scala:431) at org.nlogo.parse.StructureParser$.parsingWithExtensions(StructureParser.scala:68) at org.nlogo.parse.StructureParser$.parseSources(StructureParser.scala:33) at org.nlogo.parse.NetLogoParser.basicParse(NetLogoParser.scala:17) at org.nlogo.parse.NetLogoParser.basicParse$(NetLogoParser.scala:15) at org.nlogo.parse.FrontEnd$.basicParse(FrontEnd.scala:10) at org.nlogo.parse.FrontEndMain.frontEnd(FrontEnd.scala:26) at org.nlogo.parse.FrontEndMain.frontEnd$(FrontEnd.scala:25) at org.nlogo.parse.FrontEnd$.frontEnd(FrontEnd.scala:10) at org.nlogo.compile.CompilerMain$.compile(CompilerMain.scala:47) at org.nlogo.compile.Compiler.compileProgram(Compiler.scala:54) at org.nlogo.headless.HeadlessModelOpener.openFromModel(HeadlessModelOpener.scala:50) at org.nlogo.headless.HeadlessWorkspace.openModel(HeadlessWorkspace.scala:535) at org.nlogo.headless.HeadlessWorkspace.open(HeadlessWorkspace.scala:502) at org.nlogo.api.Controllable.open(Controllable.scala:19) at org.nlogo.headless.Main$.newWorkspace$1(Main.scala:20) at org.nlogo.headless.Main$.runExperiment(Main.scala:24) at org.nlogo.headless.Main$.$anonfun$main$1(Main.scala:14) at org.nlogo.headless.Main$.$anonfun$main$1$adapted(Main.scala:14) at scala.Option.foreach(Option.scala:407) at org.nlogo.headless.Main$.main(Main.scala:14) at org.nlogo.headless.Main.main(Main.scala)

Polvi8 commented 3 months ago

I find myself in a similar situation. Which NetLogo version are you using? I my case I tried running a model built with version 6.4.0 and when I previouly run > print(nl), first line in the summary part is: "supported nlversion: ✗". I wonder if this might has something to do with the error loading the csv extensions.

Edit: just saw @bitbacchus suggesting to try this in another issue.

rfgoldberg commented 4 weeks ago

I found myself in the same situation. It took me a while to resolve because running my model headless was working, but the minute I ran using the same model with nlrx, I kept getting the error that it couldn't find the extensions. I tried the suggestions linked above, but nothing worked. I'm running nlrx on a linux server, so I was able to test both the headless and nlrx runs in the same place. As a result, I could see that the nlrx version was somehow overriding the specifications in the headless.sh file. These specs include the java version as well as all of the arguments in JAVA_OPTS, including extensions directory. I could see the JAVA_OPTS variable that nlrx was using was only two arguments long, the wrong jvmem spec and the encoding, nothing else showed up. I finally got the model to run though by forcing JAVA to equal the path I wanted (ignoring JAVA_HOME which I confirmed was correct in my linux environment but the minute it ran in nlrx, the shell file printed out the wrong one) and changing the name of JAVA_OPTS to something else (just OPTS). This totally works, but I have no idea what other file is feeding nlrx the headless specs. These mods broke the headless linux models though, so I had to keep a separate file for running headless on linux with the original commands. I hope this resolves some things for folks, though it's not the nicest workaround. It would be great to have some clarity on what else could be going on here.