... the user friendly GPS tool


Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
ClassCastException
#1
Hallo Christian,

beim editieren von meinen Aufzeichnungen ist leider eine neue Exception aufgetreten.
Evtl. habe ich da etwas gemacht, was nicht vorgesehen ist.

D.h. ich wollte einige Positionen an den Anfang meines Tracks setzen, da der Logger die nicht aufgezeichnet hat. Da das nicht geht, habe ich einfach einen neuen Track angelegt, die Punkte eingefügt und wollte dann den bestehenden Track ans Ende anfügen.


Gruß
Thomas

SCHWERWIEGEND: Unhandled throwable in action MergePositionListAction: java.lang.ClassCastException: slash.navigation.nmea.NmeaPosition cannot be cast to slash.navigation.gpx.GpxPosition, java.lang.ClassCastException: slash.navigation.nmea.NmeaPosition cannot be cast to slash.navigation.gpx.GpxPosition
        at slash.navigation.gpx.GpxRoute.add(GpxRoute.java:73)
        at slash.navigation.converter.gui.undo.UndoPositionsModel.add(UndoPositionsModel.java:196)
        at slash.navigation.converter.gui.undo.UndoPositionsModel.add(UndoPositionsModel.java:189)
        at slash.navigation.converter.gui.models.OverlayPositionsModel.add(OverlayPositionsModel.java:204)
        at slash.navigation.converter.gui.actions.MergePositionListAction.run(MergePositionListAction.java:71)
        at slash.navigation.gui.actions.FrameAction.actionPerformed(FrameAction.java:53)
        at java.desktop/javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
        at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
        at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
        at java.desktop/javax.swing.DefaultButtonModel.setPressed(Unknown Source)
        at java.desktop/javax.swing.AbstractButton.doClick(Unknown Source)
        at java.desktop/javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)
        at java.desktop/javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Unknown Source)
        at java.desktop/java.awt.Component.processMouseEvent(Unknown Source)
        at java.desktop/javax.swing.JComponent.processMouseEvent(Unknown Source)
        at java.desktop/java.awt.Component.processEvent(Unknown Source)
        at java.desktop/java.awt.Container.processEvent(Unknown Source)
        at java.desktop/java.awt.Component.dispatchEventImpl(Unknown Source)
        at java.desktop/java.awt.Container.dispatchEventImpl(Unknown Source)
        at java.desktop/java.awt.Component.dispatchEvent(Unknown Source)
        at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
        at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
        at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
        at java.desktop/java.awt.Container.dispatchEventImpl(Unknown Source)
        at java.desktop/java.awt.Window.dispatchEventImpl(Unknown Source)
        at java.desktop/java.awt.Component.dispatchEvent(Unknown Source)
        at java.desktop/java.awt.EventQueue.dispatchEventImpl(Unknown Source)
        at java.desktop/java.awt.EventQueue.access$600(Unknown Source)
        at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
        at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
        at java.base/java.security.AccessController.doPrivileged(Native Method)
        at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
        at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
        at java.desktop/java.awt.EventQueue$5.run(Unknown Source)
        at java.desktop/java.awt.EventQueue$5.run(Unknown Source)
        at java.base/java.security.AccessController.doPrivileged(Native Method)
        at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
        at java.desktop/java.awt.EventQueue.dispatchEvent(Unknown Source)
        at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
        at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
        at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
        at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.desktop/java.awt.EventDispatchThread.run(Unknown Source)
Reply
#2
(18.09.2018, 18:28)lundefugl Wrote: beim editieren von meinen Aufzeichnungen ist leider eine neue Exception aufgetreten.
Evtl. habe ich da etwas gemacht, was nicht vorgesehen ist.

D.h. ich wollte einige Positionen an den Anfang meines Tracks setzen, da der Logger die nicht aufgezeichnet hat. Da das nicht geht, habe ich einfach einen neuen Track angelegt, die Punkte eingefügt und wollte dann den bestehenden Track ans Ende anfügen.

Das muß irgendwie mit der Reihenfolge Deines Vorgehens zusammenhängen.
  • Wenn ich eine NMEA-Datei lade, dann kann ich keine weiteren Positionslisten erstellen.
  • Wenn ich eine GPX-Datei erstelle und eine NMEA-Datei importiere klappt das auch.
  • Wenn ich in einer GPX-Datei eine neue Positionsliste erstelle und die hinzufüge, klappt das auch.
So geht es nicht. Wie hast Du die ClassCastException im Detail hinbekommen?
--
Christian
Reply
#3
Hallo Christian,

(23.09.2018, 11:45)routeconverter Wrote: So geht es nicht. Wie hast Du die ClassCastException im Detail hinbekommen?


du hast Recht, ganz so einfach, wie vermutet ist das nicht hinzubekommen.
Ich hatte jetzt auch etwas probieren müssen, um es wieder zu provozieren.

Die Ausgangslage ist folgende:
Ich habe GPS-Logs aus verschiedenen Quellen. Von zwei GPS-Loggern (GPX 1.1 bzw. GPX 1.0) und von meiner Kamera (CanonGPS, was wohl NMEA ist).
Ich habe nun das Canon-File (NMEA) und das von einem Logger (GPX 1.1) zusammen im Explorer selektiert und in den RC gezogen (es ist wohl wichtig, dass das GPX-File das erste File ist, sonst werden nicht beide Files geladen).
Das folgende editieren der Tracks im RC ist wohl jetzt irrelevant.

Jetzt gibt es wohl 2 Varianten, um den Fehler zu provozieren:
- man versucht den NMEA-Track an den GPX-Track anzufügen
- man fügt den GPX-Track an den NMEA-Track an (was ich wohl gemacht hatte), erstellt eine neue Positionsliste und setzt darin einige Punkte und versucht anschliessend den zusammengeführten Track dort anzufügen.

Ich denke, dass entscheidende Problem ist das Laden von mehreren Files in unterschiedlichen Formaten. Bis jetzt war mir das nicht bewusst. Ich habe kein Problem, wenn du das blocken würdest und nur eine aussagekräftige Fehlermeldung generierst. Den NMEA-Track zuvor einzeln als GPX zu speichern, wäre für mich kein großes Problem - man muss es nur wissen. Wink

Gruß
Thomas
Reply
#4
(23.09.2018, 12:48)lundefugl Wrote: Ich denke, dass entscheidende Problem ist das Laden von mehreren Files in unterschiedlichen Formaten. Bis jetzt war mir das nicht bewusst. Ich habe kein Problem, wenn du das blocken würdest und nur eine aussagekräftige Fehlermeldung generierst. Den NMEA-Track zuvor einzeln als GPX zu speichern, wäre für mich kein großes Problem - man muss es nur wissen.  Wink

Der Fix sieht relativ simpel aus und sollte eigentlich alle Probleme beheben, die beim Hinzuladen von Dateien in einem anderen Format als dem aktuellen lösen: https://github.com/cpesch/RouteConverter...db4cd3893b

Ich habe damit eine neue Vorabversion hochgeladen zum Testen.
--
Christian
Reply
#5
Hallo Christian,

(10.10.2018, 20:45)routeconverter Wrote: Ich habe damit eine neue Vorabversion hochgeladen zum Testen.

damit scheint der damalige Ablauf jetzt zu funktionieren.
Danke.

Gruß
Thomas
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)