amodeus-science / amod

Autonomous Vehicles Intelligence Analysis

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

'AVConfigGroup doesn't accept unkown parameters' error

rutym opened this issue · comments

commented

Hi all. I've downloaded the amod-tutorial project and the San Francisco scenario and tried to run the 'ScenarioPreparer' on it, but got the following exception:

Exception in thread "main" java.lang.IllegalArgumentException: Module av of type ch.ethz.matsim.av.config.AVConfigGroup doesn't accept unkown parameters. Parameter config is not part of the valid parameters: [useAccessEgress, numberOfParallelRouters, passengerAnalysisInterval, allowedLinkMode, vehicleAnalysisInterval, enableDistanceAnalysis]
	at org.matsim.core.config.ReflectiveConfigGroup.addParam(ReflectiveConfigGroup.java:225)
	at org.matsim.core.config.ConfigReaderMatsimV2.startParameter(ConfigReaderMatsimV2.java:71)
	at org.matsim.core.config.ConfigReaderMatsimV2.startTag(ConfigReaderMatsimV2.java:61)
	at org.matsim.core.config.ConfigReader.startTag(ConfigReader.java:67)
	at org.matsim.core.utils.io.MatsimXmlParser.startElement(MatsimXmlParser.java:346)
	at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:509)
	at com.sun.org.apache.xerces.internal.parsers.AbstractXMLDocumentParser.emptyElement(AbstractXMLDocumentParser.java:182)
	at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.emptyElement(XMLDTDValidator.java:766)
	at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:351)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2784)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:602)
	at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:112)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:505)
	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:842)
	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:771)
	at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
	at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1213)
	at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:643)
	at org.matsim.core.utils.io.MatsimXmlParser.parse(MatsimXmlParser.java:193)
	at org.matsim.core.utils.io.MatsimXmlParser.parse(MatsimXmlParser.java:169)
	at org.matsim.core.config.ConfigUtils.loadConfig(ConfigUtils.java:105)
	at org.matsim.core.config.ConfigUtils.loadConfig(ConfigUtils.java:72)
	at ch.ethz.idsc.amod.ScenarioPreparer.run(ScenarioPreparer.java:56)
	at ch.ethz.idsc.amod.ScenarioPreparer.main(ScenarioPreparer.java:34)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at com.intellij.rt.execution.application.AppMainV2.main(AppMainV2.java:131)

How can I know which configuration file is the problematic one? Is there something crucial I'm missing? Should I try to download the scenario again?
Thanks,
Ruty

commented

So.. it turns out the 'config_full.xml' had an error. I've re-downloaded the scenario and managed to run the 'ScenarioPreparer'. However, I now get a few exceptions while trying to run the 'ScenarioServer':

  1. A java.io.InvalidClassException: ch.ethz.idsc.amodeus.linkspeed.LinkSpeedDataContainer; local class incompatible: stream classdesc serialVersionUID =###, local class serialVersionUID = ###.
    This error doesn't stop the program from running. I've seen your answer to this github question mentioning the error, but I downloaded the code last week, so it's weird I'm getting the same error.

  2. In addition, I get following exception which makes the program stuck and I have to stop the run manually:

Exception in thread "main" com.google.inject.CreationException: Unable to create injector, see the following errors:

1) Error in custom provider, java.lang.NullPointerException
  at ch.ethz.matsim.av.framework.AVModule.provideRouters(AVModule.java:171) (via modules: com.google.inject.util.Modules$CombinedModule -> com.google.inject.util.Modules$CombinedModule -> org.matsim.core.controler.AbstractModule$4 -> com.google.inject.util.Modules$OverrideModule -> org.matsim.core.controler.AbstractModule$4 -> com.google.inject.util.Modules$OverrideModule -> org.matsim.core.controler.AbstractModule$4 -> com.google.inject.util.Modules$OverrideModule -> org.matsim.core.controler.AbstractModule$4 -> com.google.inject.util.Modules$OverrideModule -> org.matsim.core.controler.AbstractModule$4 -> com.google.inject.util.Modules$OverrideModule -> org.matsim.core.controler.AbstractModule$4 -> com.google.inject.util.Modules$OverrideModule -> org.matsim.core.controler.AbstractModule$4 -> com.google.inject.util.Modules$OverrideModule -> org.matsim.core.controler.AbstractModule$4 -> com.google.inject.util.Modules$OverrideModule -> org.matsim.core.controler.AbstractModule$4 -> com.google.inject.util.Modules$OverrideModule -> org.matsim.core.controler.AbstractModule$4 -> com.google.inject.util.Modules$OverrideModule -> org.matsim.core.controler.AbstractModule$4 -> com.google.inject.util.Modules$OverrideModule -> org.matsim.core.controler.AbstractModule$4 -> com.google.inject.util.Modules$OverrideModule -> org.matsim.core.controler.AbstractModule$4 -> com.google.inject.util.Modules$OverrideModule -> org.matsim.core.controler.AbstractModule$4 -> com.google.inject.util.Modules$OverrideModule -> org.matsim.core.controler.AbstractModule$4 -> com.google.inject.util.Modules$OverrideModule -> org.matsim.core.controler.AbstractModule$4 -> com.google.inject.util.Modules$OverrideModule -> ch.ethz.matsim.av.framework.AVModule)
  at ch.ethz.matsim.av.framework.AVModule.provideRouters(AVModule.java:171) (via modules: com.google.inject.util.Modules$CombinedModule -> com.google.inject.util.Modules$CombinedModule -> org.matsim.core.controler.AbstractModule$4 -> com.google.inject.util.Modules$OverrideModule -> org.matsim.core.controler.AbstractModule$4 -> com.google.inject.util.Modules$OverrideModule -> org.matsim.core.controler.AbstractModule$4 -> com.google.inject.util.Modules$OverrideModule -> org.matsim.core.controler.AbstractModule$4 -> com.google.inject.util.Modules$OverrideModule -> org.matsim.core.controler.AbstractModule$4 -> com.google.inject.util.Modules$OverrideModule -> org.matsim.core.controler.AbstractModule$4 -> com.google.inject.util.Modules$OverrideModule -> org.matsim.core.controler.AbstractModule$4 -> com.google.inject.util.Modules$OverrideModule -> org.matsim.core.controler.AbstractModule$4 -> com.google.inject.util.Modules$OverrideModule -> org.matsim.core.controler.AbstractModule$4 -> com.google.inject.util.Modules$OverrideModule -> org.matsim.core.controler.AbstractModule$4 -> com.google.inject.util.Modules$OverrideModule -> org.matsim.core.controler.AbstractModule$4 -> com.google.inject.util.Modules$OverrideModule -> org.matsim.core.controler.AbstractModule$4 -> com.google.inject.util.Modules$OverrideModule -> org.matsim.core.controler.AbstractModule$4 -> com.google.inject.util.Modules$OverrideModule -> org.matsim.core.controler.AbstractModule$4 -> com.google.inject.util.Modules$OverrideModule -> org.matsim.core.controler.AbstractModule$4 -> com.google.inject.util.Modules$OverrideModule -> org.matsim.core.controler.AbstractModule$4 -> com.google.inject.util.Modules$OverrideModule -> ch.ethz.matsim.av.framework.AVModule)
  while locating java.util.Map<org.matsim.api.core.v01.Id<ch.ethz.matsim.av.data.AVOperator>, ch.ethz.matsim.av.router.AVRouter>
    for field at ch.ethz.matsim.av.router.AVRouterShutdownListener.routers(AVRouterShutdownListener.java:14)
  while locating ch.ethz.matsim.av.router.AVRouterShutdownListener
  while locating org.matsim.core.controler.listener.ControlerListener annotated with @com.google.inject.multibindings.Element(setName=,uniqueId=304, type=MULTIBINDER, keyType=)
  at com.google.inject.util.Modules$OverrideModule.configure(Modules.java:198) (via modules: com.google.inject.util.Modules$CombinedModule -> com.google.inject.util.Modules$CombinedModule -> org.matsim.core.controler.AbstractModule$4 -> com.google.inject.util.Modules$OverrideModule -> org.matsim.core.controler.AbstractModule$4 -> com.google.inject.util.Modules$OverrideModule -> org.matsim.core.controler.Controler$1 -> com.google.inject.multibindings.Multibinder$RealMultibinder)
  while locating java.util.Set<org.matsim.core.controler.listener.ControlerListener>
    for the 13th parameter of org.matsim.core.controler.NewControler.<init>(NewControler.java:64)
  while locating org.matsim.core.controler.NewControler
  at org.matsim.core.controler.NewControlerModule.install(NewControlerModule.java:8) (via modules: com.google.inject.util.Modules$CombinedModule -> com.google.inject.util.Modules$CombinedModule -> org.matsim.core.controler.AbstractModule$4 -> com.google.inject.util.Modules$OverrideModule -> org.matsim.core.controler.Controler$2 -> org.matsim.core.controler.NewControlerModule)
  while locating org.matsim.core.controler.ControlerI

1 error
	at com.google.inject.internal.Errors.throwCreationExceptionIfErrorsExist(Errors.java:470)
	at com.google.inject.internal.InternalInjectorCreator.injectDynamically(InternalInjectorCreator.java:184)
	at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:110)
	at com.google.inject.internal.InjectorImpl.createChildInjector(InjectorImpl.java:232)
	at com.google.inject.internal.InjectorImpl.createChildInjector(InjectorImpl.java:236)
	at org.matsim.core.controler.Injector.createInjector(Injector.java:74)
	at org.matsim.core.controler.Controler.run(Controler.java:227)
	at ch.ethz.idsc.amod.ScenarioServer.simulate(ScenarioServer.java:198)
	at ch.ethz.idsc.amod.ScenarioServer.main(ScenarioServer.java:62)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at com.intellij.rt.execution.application.AppMainV2.main(AppMainV2.java:131)
Caused by: java.lang.NullPointerException
	at java.util.Objects.requireNonNull(Objects.java:203)
	at ch.ethz.idsc.amodeus.linkspeed.LSDataTravelTime.<init>(LSDataTravelTime.java:21)
	at ch.ethz.idsc.amodeus.linkspeed.TaxiTravelTimeRouter$Factory.createRouter(TaxiTravelTimeRouter.java:71)
	at ch.ethz.matsim.av.framework.AVModule.provideRouters(AVModule.java:183)
	at ch.ethz.matsim.av.framework.AVModule$$FastClassByGuice$$6f2f0597.invoke(<generated>)
	at com.google.inject.internal.ProviderMethod$FastClassProviderMethod.doProvision(ProviderMethod.java:264)
	at com.google.inject.internal.ProviderMethod$Factory.provision(ProviderMethod.java:401)
	at com.google.inject.internal.ProviderMethod$Factory.get(ProviderMethod.java:376)
	at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46)
	at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1092)
	at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
	at com.google.inject.internal.SingletonScope$1.get(SingletonScope.java:194)
	at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:41)
	at com.google.inject.internal.SingleFieldInjector.inject(SingleFieldInjector.java:54)
	at com.google.inject.internal.MembersInjectorImpl.injectMembers(MembersInjectorImpl.java:132)
	at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:120)
	at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:90)
	at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:268)
	at com.google.inject.internal.FactoryProxy.get(FactoryProxy.java:56)
	at com.google.inject.internal.InjectorImpl$2$1.call(InjectorImpl.java:1019)
	at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1092)
	at com.google.inject.internal.InjectorImpl$2.get(InjectorImpl.java:1015)
	at com.google.inject.multibindings.Multibinder$RealMultibinder.get(Multibinder.java:375)
	at com.google.inject.multibindings.Multibinder$RealMultibinder.get(Multibinder.java:258)
	at com.google.inject.internal.ProviderInternalFactory.provision(ProviderInternalFactory.java:81)
	at com.google.inject.internal.InternalFactoryToInitializableAdapter.provision(InternalFactoryToInitializableAdapter.java:53)
	at com.google.inject.internal.ProviderInternalFactory.circularGet(ProviderInternalFactory.java:61)
	at com.google.inject.internal.InternalFactoryToInitializableAdapter.get(InternalFactoryToInitializableAdapter.java:45)
	at com.google.inject.internal.SingleParameterInjector.inject(SingleParameterInjector.java:38)
	at com.google.inject.internal.SingleParameterInjector.getAll(SingleParameterInjector.java:62)
	at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:110)
	at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:90)
	at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:268)
	at com.google.inject.internal.FactoryProxy.get(FactoryProxy.java:56)
	at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46)
	at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1092)
	at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
	at com.google.inject.internal.SingletonScope$1.get(SingletonScope.java:194)
	at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:41)
	at com.google.inject.internal.InternalInjectorCreator$1.call(InternalInjectorCreator.java:205)
	at com.google.inject.internal.InternalInjectorCreator$1.call(InternalInjectorCreator.java:199)
	at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1085)
	at com.google.inject.internal.InternalInjectorCreator.loadEagerSingletons(InternalInjectorCreator.java:199)
	at com.google.inject.internal.InternalInjectorCreator.injectDynamically(InternalInjectorCreator.java:180)
	... 12 more

Any ideas how to solve this?
Thanks
Ruty

Hey Ruty
Both errors are connected:

  • As you already mentioned, it is possible to run past the first error. The idea there is to allow for no linkSpeedData file, as done in all the public scenarios but San Francisco.
  • The problem here however is, that the file exists but has not the correct serialization version anymore. Hence it is impossible to load, causing the second error.

This should now be resolved as we uploaded new scenarios together with the new amodeus and amod 1.9.0 versions. Please pull the latest versions and download the new scenario from the website.
Let us know if there is still a problem.
Thanks,
Joel