I have had this error three times now, I think on Polyscope 5.17.x on all occasions.
When the error happens, the installation file cannot be saved and says “Not an Installation File” when trying to load it.
Looking at the installation file, the html closing tags are corrupt. In the bottom of the file, it lists contributions and urcaps in this structure:
<Contributions>
<URCaps>
<Contributed ownerId="ownerId">
<data key="enabled" value="false"/>
<data key="major.version" value="5"/>
<data key="minor.version" value="4"/>
</Contributed>
<Contributed ownerId="ownerId">
<data key="key"
And then it is cut off, without enclosing the html tags.
The file works again if I enclose the tags properly.
Has anyone else experienced this, knows what causes it, and how to avoid it?
I might have removed some missing URCap installation nodes beforehand, but I am unsure. But either way this should not cause issues.
I found a log error probably regarding the issue:
2025-01-21 11:08:45.759 ERROR - Fatal error on installation load {thread: pool-4-thread-1 , loggerClass: com.ur.view.polyscope.persistence.installation.RobotInstallationPersistence$SerializePersistenceStrategy}
com.thoughtworks.xstream.io.StreamException:
at com.thoughtworks.xstream.io.xml.DomDriver.createReader(DomDriver.java:115) ~[?:?]
at com.thoughtworks.xstream.io.xml.DomDriver.createReader(DomDriver.java:80) ~[?:?]
at com.thoughtworks.xstream.XStream.fromXML(XStream.java:1284) ~[?:?]
at com.ur.polyscope.persistence.impl.XStreamSerialization.fromXML(XStreamSerialization.java:65) ~[?:?]
at com.ur.view.polyscope.persistence.installation.InstallationXMLPersistStrategy.unmarshal(InstallationXMLPersistStrategy.java:65) ~[polyscope-internal-view-10.19.95.jar:?]
at com.ur.view.polyscope.persistence.installation.InstallationXMLPersistStrategy.unmarshal(InstallationXMLPersistStrategy.java:1) ~[polyscope-internal-view-10.19.95.jar:?]
at gui.tools.URFileUtils.readPlainTextStream(URFileUtils.java:103) ~[polyscope-internal-view-10.19.95.jar:?]
at gui.tools.URFileUtils.readCompressedStream(URFileUtils.java:97) ~[polyscope-internal-view-10.19.95.jar:?]
at gui.tools.URFileUtils.readCompressedFile(URFileUtils.java:85) ~[polyscope-internal-view-10.19.95.jar:?]
at gui.tools.URFileUtils.readPossiblyCompressedFile(URFileUtils.java:77) ~[polyscope-internal-view-10.19.95.jar:?]
at gui.tools.URFileUtils$DefaultFacade.readPossiblyCompressedFile(URFileUtils.java:256) ~[polyscope-internal-view-10.19.95.jar:?]
at com.ur.view.polyscope.persistence.installation.RobotInstallationPersistence$SerializePersistenceStrategy.loadFile(RobotInstallationPersistence.java:157) [polyscope-internal-view-10.19.95.jar:?]
at com.ur.view.polyscope.persistence.installation.RobotInstallationPersistence$SerializePersistenceStrategy.load_aroundBody2(RobotInstallationPersistence.java:190) [polyscope-internal-view-10.19.95.jar:?]
at com.ur.view.polyscope.persistence.installation.RobotInstallationPersistence$SerializePersistenceStrategy$AjcClosure3.run(RobotInstallationPersistence.java:1) [polyscope-internal-view-10.19.95.jar:?]
at org.aspectj.runtime.reflect.JoinPointImpl.proceed(JoinPointImpl.java:179) [org.apache.servicemix.bundles.aspectj-1.9.9_1.jar:?]
at com.ur.lang.InterceptionUtils$1.proceed(InterceptionUtils.java:18) [polyscope-lang-1.7.1.jar:?]
at com.ur.injection.IgnoreCallInterceptor.process(IgnoreCallInterceptor.java:47) [polyscope-lang-1.7.1.jar:?]
at com.ur.injection.ChainingInterceptor.invoke(ChainingInterceptor.java:16) [polyscope-lang-1.7.1.jar:?]
at com.ur.lang.InterceptionUtils.intercept(InterceptionUtils.java:15) [polyscope-lang-1.7.1.jar:?]
at com.ur.lang.naming.NameChangeAspect.aroundAnnotatedMethod(NameChangeAspect.java:19) [polyscope-lang-1.7.1.jar:?]
at com.ur.view.polyscope.persistence.installation.RobotInstallationPersistence$SerializePersistenceStrategy.load(RobotInstallationPersistence.java:189) [polyscope-internal-view-10.19.95.jar:?]
at com.ur.view.polyscope.persistence.installation.RobotInstallationPersistence.load(RobotInstallationPersistence.java:69) [polyscope-internal-view-10.19.95.jar:?]
at gui.installation.services.RobotInstallationLookupServiceImpl.load(RobotInstallationLookupServiceImpl.java:176) [polyscope-internal-view-10.19.95.jar:?]
at gui.program.ProgramInstallationHandler.loadRobotInstallationForProgram(ProgramInstallationHandler.java:42) [polyscope-internal-view-10.19.95.jar:?]
at gui.program.FileManagementProgramComponent$AttemptLoadInstallation.load(FileManagementProgramComponent.java:214) [polyscope-internal-view-10.19.95.jar:?]
at gui.program.FileManagementProgramComponent.loadRobotInstallationForProgram(FileManagementProgramComponent.java:152) [polyscope-internal-view-10.19.95.jar:?]
at gui.program.ProgramRootNodeLoad$LoadTask.run(ProgramRootNodeLoad.java:408) [polyscope-internal-view-10.19.95.jar:?]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_171]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_171]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_171]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_171]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_171]
Caused by: org.xml.sax.SAXParseException: XML document structures must start and end within the same entity.
at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:257) ~[?:1.8.0_171]
at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:339) ~[?:1.8.0_171]
at com.thoughtworks.xstream.io.xml.DomDriver.createReader(DomDriver.java:108) ~[?:?]
... 31 more
2025-01-21 11:08:51.365 WARN - Load installation
Total elapsed time: 5651ms. {thread: pool-4-thread-1 , loggerClass: com.ur.view.polyscope.persistence.program.LogTime}
2025-01-21 11:08:57.472 ERROR - PolyscopePanel.loadProgram(): loaded program is null {thread: AWT-EventQueue-0 , loggerClass: com.ur.view.polyscope.persistence.program.ProgramRootNodePersistence$LoadFileContainer}