Neues Tool: RWInfo

  • Dieses Tool ist eher was für Streckenbauer und Szenarioersteller.
    Andere Leute werden keinen oder nur einen geringen Nutzen daraus ziehen können.
    Was Java angeht, bringt RWInfo meines Wissens alles mit, so dass man selbt ohne Java zu haben es benutzen kann.


    Übrigens hatte ich doch die TrainWorks-Erweiterung für M-Gap installiert. Nachdem ich die Strecke zum Urzustand zurückänderte, zeigt RWInfo nun die korrekten km-Angaben an.
    Beim FelberpassV2 und zwei weiteren Strecken-BetaVersionen bleibt dieser MiniBug aber bestehen.
    Ich find's aber nicht schlimm. Diese Info ist nicht maßgeblich oder wichtig oder hat sonstwie eine Verlässlichkeitsnotwendigkeit (komisches Wort, mir fiel grad nix anners ein :P ). Dieser Wert ist nur ein interessantes Gimmick zum "Streckenschwanzvergleich" ==> meine ist länger!


    Und unsere SWB ist viel länger als die TestTrak... ätschibätschi! *frech*

    Egal, wie weit Draußen man die Wahrheit über Bord wirft, irgendwann wird sie irgendwo an Land gespült.

  • Ich fände es vor allen Dingen schön, wenn man das Tool auch mit einer vorhandenen Java-Installation zum Laufen bringen und das mitgelieferte JAVA löschen könnte. Java auf Windows ist ohnehin immer nahe dran an Sicherheits-Supergau und meine Sicherheits-Software müsste nicht bei jedem Scan an zu maulen fangen ...

  • Wie gesagt ursprünglich hat das mal bei mir funktioniert. Irgendwann nach einem Update von DTG dann nicht mehr.
    Und selbst jetzt nach Neuinstallation des Grundprogs und es aktuellen Updates bekomme ich nur zwei Strecken zu sehen uns sonst nichts.
    Aber wie ich schon sagte für mich eher nicht so wirklich wichtig von daher kann ich damit leben.


    Generell würde ich jetzt extremst nachforschen wo der Fehler sitzt und ich würde das auch finden aber da lohnt sich für mich der Aufwand nicht so wirklich.

  • Der "Sicherheits-SuperGau" bei Java ist nur dann relevant, wenn man ungefragt Inhalte im Browser aus dem WWW dargestellt bekommt. Nicht ohne Grund ist das PlugIn im FF deaktiviert, und das ist auch gut so.
    Bei lokalen Anwendungen wie hier ist das aber vollkommen irrelevant und Java ist genauso (un)gefährlich wie jeder andere Software auch, die lokal mit den Rechten des Users läuft.

    Egal, wie weit Draußen man die Wahrheit über Bord wirft, irgendwann wird sie irgendwo an Land gespült.

  • @Prelli @Madison : Dann habt ihr Glück gehabt. Ich habe leider schon ein Problem gehabt, wo die lokale JAVA-Installation für eine Rechte-Ausweitung missbraucht wurde (Ausbruch aus der JAVA-Sandbox und dem User-Context).


    Und wenn ich schon eine aktuelle und gepflegte JAVA-Installation habe, die von einer Sicherheitssoftware überwacht wird, warum soll ich mir dann noch eine andere Version auf den Rechner holen ...

  • Wenn man einem Programmierer nicht traut, bzw. nicht das Risiko eines Missbrauchs einzugehen bereit ist, sollte man sich die Software nicht installieren.
    Das gilt für alle Anwendungen, nicht nur für Java.


    Hier im vorliegenden Fall müsste ich also Tomy misstrauen, wenn ich Angst hätte, sein Programm könnte aus der Java-Sandbox ausbrechen und eine Rechteausweitung anstreben.
    Ich denke, diese Risiken sind stets und überall gegeben, egal ob Java oder nicht und sich verrückt zu machen hat einfach keinen Sinn.
    Genaugenommen müsste man inzwischen erheblich mehr seinem Betriebssystem des eigenen PCs, seinen eigenen Netzwerkkomponenten zuhause, dem Staat, dem eigenen Internetprovider, diversen Großkonzernen und an vorderster Stelle seinem eigenen Smartphone mit kamera und Mikrophon misstrauen, aber nicht einem Hobbyprogrammierer, der sich hier auf einem Simulator-Forum mit geringer Userfrequentierung bislang als zuverlässiger und angenehmer Gesprächspartner darstellte.


    Aber vielleicht kann Tomy ja ein zweites Setup anbieten, das RWInfo für ein bereits vorhandenes Java einrichtet und auf mitgebrachte Java-Laufzeitkomponenten verzichtet?

    Egal, wie weit Draußen man die Wahrheit über Bord wirft, irgendwann wird sie irgendwo an Land gespült.

  • Grundsätzlich beinhaltet doch die Installation jeglicher Software (angefangen bei Windows ;) ) das Problem, dass man sich neue Sicherheitslücken einfängt.


    Ich habe mich entschieden, RWInfo mit einer Java-Version auszuliefern, weil

    • ich davon ausgehe, dass 90% der Benutzer von RWInfo kein Java installiert haben
    • deshalb 90 % der Benutzer von RWInfo zusätzlich ein Java-Runtime herunterladen und installieren müssten
    • bei der separaten Installation eines Java-Runtimes die grösseren Risiken zu erwarten sind (versehentliches Aktivieren von Java im Webbrowser, Installation der ASK-Toolbar)
    • der Download von RWInfo mit Java-Runtime kleiner ist als der Download des Java-Runtimes!
    • ich so genau weiss, welche Java-Version von RWInfo verwendet wird (ich muss RWInfo nicht mit verschiedenen Versionen von Java testen)


    Wenn es Bedarf gibt, kann ich (für Profis) aber durchaus auch einen Installer kreieren, der ein vorhandenes Java-Runtime verwendet.


    Den Uninstaller habe ich bisher vernachlässigt, werde ich aber mit einer der nächsten Versionen verbessern.null


    Gast-: wenn nur zwei Strecken angezeigt werden müssten aber im Logfenster (Fenster -> Zeige Loggingfenster) Fehlermeldungen angezeigt werden. Anhand dieser kann ich ja vielleicht etwas am Programm verbessern...

  • Madison:
    Dazu die Fehlermeldung im Logfenster anklicken, dann öffnet sich das eigentlich wichtige Debug-Protokoll in einem neuen Fenster.
    Vermutlich hängt sich die 2. oder 3. Strecke bei dir auf, weswegen weitere Strecken nicht mehr eingelesen werden.

    Egal, wie weit Draußen man die Wahrheit über Bord wirft, irgendwann wird sie irgendwo an Land gespült.

  • @tomy
    Ich hab mir auch mal dein Programm geholt und wollte mal spaßeshalber meine Strecke ausrechnen lassen.
    Bekomme allerdings 0 km angezeigt.


    Ich denke diese Fehlermeldung gehört dazu:
    12:54:09.843 [pool-1-thread-7] ERROR ch.tkl.rw.routes.SRouteReader - Unexpected exception
    java.util.concurrent.ExecutionException: java.lang.NullPointerException
    at java.util.concurrent.FutureTask.report(Unknown Source) [na:1.7.0_72]
    at java.util.concurrent.FutureTask.get(Unknown Source) [na:1.7.0_72]
    at ch.tkl.utils.FutureCollector$$anonfun$waitForCompletion$2.apply(FutureCollector.scala:19) [RWDisplayTracks.jar:na]
    at ch.tkl.utils.FutureCollector$$anonfun$waitForCompletion$2.apply(FutureCollector.scala:17) [RWDisplayTracks.jar:na]
    at scala.collection.TraversableLike$WithFilter$$anonfun$foreach$1.apply(TraversableLike.scala:778) [scala-library-2.11.4.jar:na]
    at scala.collection.immutable.List.foreach(List.scala:381) [scala-library-2.11.4.jar:na]
    at scala.collection.generic.TraversableForwarder$class.foreach(TraversableForwarder.scala:35) [scala-library-2.11.4.jar:na]
    at scala.collection.mutable.ListBuffer.foreach(ListBuffer.scala:45) [scala-library-2.11.4.jar:na]
    at scala.collection.TraversableLike$WithFilter.foreach(TraversableLike.scala:777) [scala-library-2.11.4.jar:na]
    at ch.tkl.utils.FutureCollector.waitForCompletion(FutureCollector.scala:17) [RWDisplayTracks.jar:na]
    at ch.tkl.rw.routes.SRouteReader$$anonfun$read$5.apply(SRouteReader.scala:161) [RWDisplayTracks.jar:na]
    at ch.tkl.rw.routes.SRouteReader$$anonfun$read$5.apply(SRouteReader.scala:160) [RWDisplayTracks.jar:na]
    at ch.tkl.rw.routes.SRouteReader$$anon$3.call(SRouteReader.scala:49) [RWDisplayTracks.jar:na]
    at java.util.concurrent.FutureTask.run(Unknown Source) [na:1.7.0_72]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [na:1.7.0_72]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [na:1.7.0_72]
    at java.lang.Thread.run(Unknown Source) [na:1.7.0_72]
    Caused by: java.lang.NullPointerException: null
    at ch.tkl.rw.reader.BuildObjects.getEnumValue(BuildObjects.java:227) ~[RWObjects.jar:na]
    at ch.tkl.rw.reader.BuildObjects.initValue(BuildObjects.java:160) ~[RWObjects.jar:na]
    at ch.tkl.rw.reader.BuildObjects.initValues(BuildObjects.java:83) ~[RWObjects.jar:na]
    at ch.tkl.rw.reader.BuildObjects.getValue(BuildObjects.java:318) ~[RWObjects.jar:na]
    at ch.tkl.rw.reader.BuildObjects.initValue(BuildObjects.java:179) ~[RWObjects.jar:na]
    at ch.tkl.rw.reader.BuildObjects.initValues(BuildObjects.java:83) ~[RWObjects.jar:na]
    at ch.tkl.rw.reader.BuildObjects.getValue(BuildObjects.java:318) ~[RWObjects.jar:na]
    at ch.tkl.rw.reader.BuildObjects.initValue(BuildObjects.java:179) ~[RWObjects.jar:na]
    at ch.tkl.rw.reader.BuildObjects.initValues(BuildObjects.java:83) ~[RWObjects.jar:na]
    at ch.tkl.rw.reader.BuildObjects.buildTree(BuildObjects.java:76) ~[RWObjects.jar:na]
    at ch.tkl.rw.tracks.TrackLengthCollector.findBlueprint(TrackLengthCollector.java:94) ~[RWDisplayTracks.jar:na]
    at ch.tkl.rw.tracks.TrackLengthCollector.processProperties(TrackLengthCollector.java:66) ~[RWDisplayTracks.jar:na]
    at ch.tkl.rw.tracks.TrackLengthCollector.extractLengths(TrackLengthCollector.java:50) ~[RWDisplayTracks.jar:na]
    at ch.tkl.rw.routes.SRouteReader$$anonfun$read$2.apply(SRouteReader.scala:117) ~[RWDisplayTracks.jar:na]
    ... 5 common frames omitted

  • Vielleicht auch eine fehlende Trackrule wie bei einer Strecke bei mir?


    Paar aussagekräftige Fehlermeldungen wären schon cool :)

    Egal, wie weit Draußen man die Wahrheit über Bord wirft, irgendwann wird sie irgendwo an Land gespült.

  • Ich habe mich heute doch nochmal mit dem Prog beschäftigt. Ich habe Version 1.2.1 und anschließend das Update auf 1.2.2 aufgespielt.
    In beiden Fällen also mit und ohne Update werden mir nur die GranfieldBranch und die Great Western Mainline angezeigt.
    Wenn ich die beiden Strecken temporär aus dem Content Ordner entferne dann werden auf einmal vier weitere Routen angezeigt.


    Das witzige ist das wenn ich dann das alte Setup 1.1.2 aufspiele mir RW Info alle Strecken anzeigt :D
    Allerdings gibt es dann Probleme wegen der Northern Europe aber sonst läuft es.


    Fehlermeldung bei 1.2.2


    18:19:44.902 [AWT-EventQueue-0] ERROR ch.tkl.rw.routes.RouteStore - Exception while reading routes
    java.util.concurrent.ExecutionException: java.lang.NoClassDefFoundError: ch/tkl/rw/types/NULLMapProjection
    at java.util.concurrent.FutureTask.report(Unknown Source) ~[na:1.7.0_72]
    at java.util.concurrent.FutureTask.get(Unknown Source) ~[na:1.7.0_72]
    at javax.swing.SwingWorker.get(Unknown Source) ~[na:1.7.0_72]
    at ch.tkl.rw.routes.RouteStore$2.done(RouteStore.java:100) ~[RWDisplayTracks.jar:na]
    at javax.swing.SwingWorker$5.run(Unknown Source) [na:1.7.0_72]
    at javax.swing.SwingWorker$DoSubmitAccumulativeRunnable.run(Unknown Source) [na:1.7.0_72]
    at sun.swing.AccumulativeRunnable.run(Unknown Source) [na:1.7.0_72]
    at javax.swing.SwingWorker$DoSubmitAccumulativeRunnable.actionPerformed(Unknown Source) [na:1.7.0_72]
    at javax.swing.Timer.fireActionPerformed(Unknown Source) [na:1.7.0_72]
    at javax.swing.Timer$DoPostEvent.run(Unknown Source) [na:1.7.0_72]
    at java.awt.event.InvocationEvent.dispatch(Unknown Source) [na:1.7.0_72]
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source) [na:1.7.0_72]
    at java.awt.EventQueue.access$200(Unknown Source) [na:1.7.0_72]
    at java.awt.EventQueue$3.run(Unknown Source) [na:1.7.0_72]
    at java.awt.EventQueue$3.run(Unknown Source) [na:1.7.0_72]
    at java.security.AccessController.doPrivileged(Native Method) [na:1.7.0_72]
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) [na:1.7.0_72]
    at java.awt.EventQueue.dispatchEvent(Unknown Source) [na:1.7.0_72]
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) [na:1.7.0_72]
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) [na:1.7.0_72]
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) [na:1.7.0_72]
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source) [na:1.7.0_72]
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source) [na:1.7.0_72]
    at java.awt.EventDispatchThread.run(Unknown Source) [na:1.7.0_72]
    Caused by: java.lang.NoClassDefFoundError: ch/tkl/rw/types/NULLMapProjection
    at ch.tkl.rw.reader.OC$11.create(Unknown Source) ~[na:na]
    at ch.tkl.rw.reader.BuildObjects.createObject(BuildObjects.java:344) ~[RWObjects.jar:na]
    at ch.tkl.rw.reader.BuildObjects.getValue(BuildObjects.java:315) ~[RWObjects.jar:na]
    at ch.tkl.rw.reader.BuildObjects.initValue(BuildObjects.java:179) ~[RWObjects.jar:na]
    at ch.tkl.rw.reader.BuildObjects.initValues(BuildObjects.java:83) ~[RWObjects.jar:na]
    at ch.tkl.rw.reader.BuildObjects.getValue(BuildObjects.java:318) ~[RWObjects.jar:na]
    at ch.tkl.rw.reader.BuildObjects.initValue(BuildObjects.java:179) ~[RWObjects.jar:na]
    at ch.tkl.rw.reader.BuildObjects.initValues(BuildObjects.java:83) ~[RWObjects.jar:na]
    at ch.tkl.rw.reader.BuildObjects.buildTree(BuildObjects.java:76) ~[RWObjects.jar:na]
    at ch.tkl.rw.routes.RouteStore.readRouteProperties(RouteStore.java:144) ~[RWDisplayTracks.jar:na]
    at ch.tkl.rw.routes.RouteStore.doScanRoutes(RouteStore.java:118) ~[RWDisplayTracks.jar:na]
    at ch.tkl.rw.routes.RouteStore.access$000(RouteStore.java:38) ~[RWDisplayTracks.jar:na]
    at ch.tkl.rw.routes.RouteStore$2.doInBackground(RouteStore.java:82) ~[RWDisplayTracks.jar:na]
    at ch.tkl.rw.routes.RouteStore$2.doInBackground(RouteStore.java:79) ~[RWDisplayTracks.jar:na]
    at javax.swing.SwingWorker$1.call(Unknown Source) ~[na:1.7.0_72]
    at java.util.concurrent.FutureTask.run(Unknown Source) ~[na:1.7.0_72]
    at javax.swing.SwingWorker.run(Unknown Source) ~[na:1.7.0_72]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) ~[na:1.7.0_72]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) ~[na:1.7.0_72]
    at java.lang.Thread.run(Unknown Source) ~[na:1.7.0_72]
    Caused by: java.lang.ClassNotFoundException: ch.tkl.rw.types.NULLMapProjection
    at java.lang.ClassLoader.findClass(Unknown Source) ~[na:1.7.0_72]
    at java.lang.ClassLoader.loadClass(Unknown Source) ~[na:1.7.0_72]
    at java.lang.ClassLoader.loadClass(Unknown Source) ~[na:1.7.0_72]
    ... 20 common frames omitted

  • Als Vorbereitung auf den neuen Update 1.2.3 habe ich eine erste Hotfix-Version 1.2.2-hf-1 bei Dropbox hochgeladen.


    Diese Version korrigiert zwei Fehler:

    • NullPointerException wenn eine Route eine nicht existierende TrackRule.bin referenziert ( @Prelli )
    • NullPointerException wenn eine Konstante in der Gross/Kleinschreibung nicht passt ( @Schienenbus )

    Zudem habe ich Code eingebaut um das Problem von @Madison einzugrenzen. Es sollten jetzt alle bis auf eine Route aufgelistet werden. Für die nicht aufgelistete Route müsste im Logfenster eine Fehlermeldung auftauchen mit der RoutenID. Ich wäre Dir dankbar, wenn Du mir die RoutenID und den Routennamen aus der routeproperties.xml senden könntest. Wenn es sich um eine Freeware-Route handelt kann ich sie so herunterladen und das Problem weiter eingrenzen.

  • @Prelli, @tomy : Da habt ihr jetzt etwas in den falschen Hals bekommen :) Geht nicht darum, dass ich Dir, tomy, misstraue, sondern der JAVA-Runtime. Du lieferst die Runtime mit aus, kannst aber nicht bei jedem JAVA-Update auch ein Update Deines Programms herausbringen. Und dann bleibt eine nicht gepflegte und ältere JAVA-Runtime im deinem Programm-Ordner, die mit normalen Benutzerrechten gefunden und mit beliebigem JAVA-Code ausgeführt werden kann. Und ja, der Fall ist sehr selten, aber wenn mal einmal alles neu installieren musste, weil alle Daten per Trojaner verschlüsselt waren, braucht man das kein zweites Mal ...


    Wäre einfach nur toll, wenn das Programm beim Start nicht gleich mit einer Fehlermeldung abbrechen würde, wenn man die mitgelieferte JAVA-Runtime gelöscht hat. Müsste ja eigentlich auch funktionieren, wenn eine andere JAVA-Runtime im Pfad vorhanden ist. Ist ja nur eine Idee, vielleicht als Startparameter oder so :)

    Einmal editiert, zuletzt von NoFly ()

  • Bei mir funktioniert alles bis auf die West Highland Line. Die Strecke wird zwar in der Liste angezeigt aber wenn ich auf den Eintrag klicke wird nichts angezeigt.
    Den Hotfix habe ich schon installiert. Hier mal die Fehlermeldung:


    16:13:27.388 [pool-1-thread-6] ERROR ch.tkl.rw.routes.SRouteReader - Unexpected exception
    java.util.concurrent.ExecutionException: java.util.concurrent.ExecutionException: java.util.concurrent.ExecutionException: java.lang.NoClassDefFoundError: ch/tkl/rw/types/network/WhistleSignProperty
    at java.util.concurrent.FutureTask.report(Unknown Source) [na:1.7.0_72]
    at java.util.concurrent.FutureTask.get(Unknown Source) [na:1.7.0_72]
    at ch.tkl.utils.FutureCollector$$anonfun$waitForCompletion$2.apply(FutureCollector.scala:19) [RWDisplayTracks.jar:na]
    at ch.tkl.utils.FutureCollector$$anonfun$waitForCompletion$2.apply(FutureCollector.scala:17) [RWDisplayTracks.jar:na]
    at scala.collection.TraversableLike$WithFilter$$anonfun$foreach$1.apply(TraversableLike.scala:778) [scala-library-2.11.4.jar:na]
    at scala.collection.immutable.List.foreach(List.scala:381) [scala-library-2.11.4.jar:na]
    at scala.collection.generic.TraversableForwarder$class.foreach(TraversableForwarder.scala:35) [scala-library-2.11.4.jar:na]
    at scala.collection.mutable.ListBuffer.foreach(ListBuffer.scala:45) [scala-library-2.11.4.jar:na]
    at scala.collection.TraversableLike$WithFilter.foreach(TraversableLike.scala:777) [scala-library-2.11.4.jar:na]
    at ch.tkl.utils.FutureCollector.waitForCompletion(FutureCollector.scala:17) [RWDisplayTracks.jar:na]
    at ch.tkl.rw.routes.SRouteReader$$anonfun$read$5.apply(SRouteReader.scala:161) [RWDisplayTracks.jar:na]
    at ch.tkl.rw.routes.SRouteReader$$anonfun$read$5.apply(SRouteReader.scala:160) [RWDisplayTracks.jar:na]
    at ch.tkl.rw.routes.SRouteReader$$anon$3.call(SRouteReader.scala:49) [RWDisplayTracks.jar:na]
    at java.util.concurrent.FutureTask.run(Unknown Source) [na:1.7.0_72]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [na:1.7.0_72]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [na:1.7.0_72]
    at java.lang.Thread.run(Unknown Source) [na:1.7.0_72]
    Caused by: java.util.concurrent.ExecutionException: java.util.concurrent.ExecutionException: java.lang.NoClassDefFoundError: ch/tkl/rw/types/network/WhistleSignProperty
    at java.util.concurrent.FutureTask.report(Unknown Source) [na:1.7.0_72]
    at java.util.concurrent.FutureTask.get(Unknown Source) [na:1.7.0_72]
    at ch.tkl.rw.routes.SRouteReader$$anonfun$read$3.apply(SRouteReader.scala:123) ~[RWDisplayTracks.jar:na]
    at ch.tkl.rw.routes.SRouteReader$$anonfun$read$3.apply(SRouteReader.scala:121) ~[RWDisplayTracks.jar:na]
    ... 5 common frames omitted
    Caused by: java.util.concurrent.ExecutionException: java.lang.NoClassDefFoundError: ch/tkl/rw/types/network/WhistleSignProperty
    at java.util.concurrent.FutureTask.report(Unknown Source) [na:1.7.0_72]
    at java.util.concurrent.FutureTask.get(Unknown Source) [na:1.7.0_72]
    at ch.tkl.rw.routes.SRouteReader$$anonfun$3.apply(SRouteReader.scala:100) ~[RWDisplayTracks.jar:na]
    at ch.tkl.rw.routes.SRouteReader$$anonfun$3.apply(SRouteReader.scala:99) ~[RWDisplayTracks.jar:na]
    ... 5 common frames omitted
    Caused by: java.lang.NoClassDefFoundError: ch/tkl/rw/types/network/WhistleSignProperty
    at ch.tkl.rw.reader.OC$95.create(Unknown Source) ~[na:na]
    at ch.tkl.rw.reader.BuildObjects.createObject(BuildObjects.java:348) ~[RWObjects.jar:na]
    at ch.tkl.rw.reader.BuildObjects.getValue(BuildObjects.java:319) ~[RWObjects.jar:na]
    at ch.tkl.rw.reader.BuildObjects.initValue(BuildObjects.java:109) ~[RWObjects.jar:na]
    at ch.tkl.rw.reader.BuildObjects.initValues(BuildObjects.java:83) ~[RWObjects.jar:na]
    at ch.tkl.rw.reader.BuildObjects.getValue(BuildObjects.java:322) ~[RWObjects.jar:na]
    at ch.tkl.rw.reader.BuildObjects.initValue(BuildObjects.java:179) ~[RWObjects.jar:na]
    at ch.tkl.rw.reader.BuildObjects.initValues(BuildObjects.java:83) ~[RWObjects.jar:na]
    at ch.tkl.rw.reader.BuildObjects.getValue(BuildObjects.java:322) ~[RWObjects.jar:na]
    at ch.tkl.rw.reader.BuildObjects.initValue(BuildObjects.java:109) ~[RWObjects.jar:na]
    at ch.tkl.rw.reader.BuildObjects.initValues(BuildObjects.java:83) ~[RWObjects.jar:na]
    at ch.tkl.rw.reader.BuildObjects.getValue(BuildObjects.java:322) ~[RWObjects.jar:na]
    at ch.tkl.rw.reader.BuildObjects.initValue(BuildObjects.java:179) ~[RWObjects.jar:na]
    at ch.tkl.rw.reader.BuildObjects.initValues(BuildObjects.java:83) ~[RWObjects.jar:na]
    at ch.tkl.rw.reader.BuildObjects.getValue(BuildObjects.java:322) ~[RWObjects.jar:na]
    at ch.tkl.rw.reader.BuildObjects.initValue(BuildObjects.java:109) ~[RWObjects.jar:na]
    at ch.tkl.rw.reader.BuildObjects.initValues(BuildObjects.java:83) ~[RWObjects.jar:na]
    at ch.tkl.rw.reader.BuildObjects.buildTree(BuildObjects.java:76) ~[RWObjects.jar:na]
    at ch.tkl.rw.reader.ObjectLoader.load(ObjectLoader.java:18) ~[RWObjects.jar:na]
    at ch.tkl.rw.routes.SRouteReader.readTrackProperties(SRouteReader.scala:170) ~[RWDisplayTracks.jar:na]
    at ch.tkl.rw.routes.SRouteReader$$anonfun$2.apply(SRouteReader.scala:93) ~[RWDisplayTracks.jar:na]
    at ch.tkl.rw.routes.SRouteReader$$anonfun$2.apply(SRouteReader.scala:91) ~[RWDisplayTracks.jar:na]
    ... 5 common frames omitted
    Caused by: java.lang.ClassNotFoundException: ch.tkl.rw.types.network.WhistleSignProperty
    at java.lang.ClassLoader.findClass(Unknown Source) ~[na:1.7.0_72]
    at java.lang.ClassLoader.loadClass(Unknown Source) ~[na:1.7.0_72]
    at java.lang.ClassLoader.loadClass(Unknown Source) ~[na:1.7.0_72]
    ... 27 common frames omitted