Trouble Shooting

NamespacePrefixManager

If you get messages indicating com.sun.xml.bin.marshaller.NamespacePrefixManager is not found, this is likely the reason: GPX Inspector uses JAXB. It includes the JAXB JAR files via the net.kenevans.jaxb plug-in. Originally JAXB was not included in the Java Runtime Environment (JRE), and this worked fine. As of sometime around Java SE 6 Update 18, JAXB started to be included in the JRE. However what was included was a version that did not contain the NamespacePrefixManager. The JRE version, since it part of the JRE, then gets used instead of the one in net.kenevans.jaxb, so that the JRE version needs to be overridden. There are at least two ways to do this:

1. Add -Djava.endorsed.dirs=<path to net.kenevans.jaxb> when the JRE is started. This overrides the JRE version with the net.kenevans.jaxb version. The deployed version of GPX Inspector sets -Djava.endorsed.dirs=./plugins/net.kenevans.jaxb_2.2.1 (see the lines below). This works as long as GPX Inspector is started from its own directory. If GPX Inspector is started from a different directory or is used as a plug-in in Eclipse, this will not work. You can explicitly set the full path to the location of net.kenevans.jaxb by editing GpxInspector.ini in the GPX Inspector directory or in the appropriate eclipse.ini in the Eclipse directory if used in an Eclipse workspace. The object to keep in mind is to set java.endorsed.dirs to point to net.kenevans.jaxb (or some other valid location of the JAXB JAR files) when the JRE is started.

Note that the deployed GpxInspector.ini should initially contain the lines:

-vmargs
-Djava.endorsed.dirs=./plugins/net.kenevans.gpxinspector_<version>

If you want it to work when GPX Inspector is started from other than in its own directory, then replace the dot with the path to where it is installed, e.g.:

-Djava.endorsed.dirs=C:/Deploy/GPX Inspector/plugins/net.kenevans.gpxinspector_<version>

Spaces in the path will be handled all right. Do not use quotes around the path, and do use forward slashes.

For example, if use set a file association for .gpx files to run GPX Inspector, then when you double click a .gpx file, it will run GPX Inspector, but from the directory of the file. Thus for the file association to work, you must use the full path as above.

2. You can copy the JARS in net.kenevans.jaxb to the endorsed directory used by the JRE. This directory should be jre/lib/endorsed, where the jre directory is where the JRE executable is located for your version of Java. You may have to create the directory.

To help debug this problem you can look in Help | About GPX Inspector | Installation Details | Configuration or in the equivalent place in Eclipse if GPX Inspector is used as a plug-in.. This will show the value of java.endorsed.dirs that is being used. Note that the NamespacePrefixManager is found in jaxb-impl.jar. The endorsed directory must be set to a place that contains this JAR.

Expand Level, Collapse Level

The menu items and icons that implement Expand Level or Contract Level in the tree view may not give the desired results. The reason is that GPX Inspector keeps track of when the user expands or collapses the tree using these menu items, but does not know when individual parts of the tree are expanded or contracted by clicking the expand arrows on the tree or other when changes are inkoled by the tree itself, perhaps owing to an element being deleted. It thus may get out of sync. You should be able to fix it by collapsing the tree to the lowest level, then expanding to what you want.