JSPM Cannot Be Started 
JSPM cannot be started. The following error message is displayed:
Syntax
class com.sap.sdt.util.diag.DevelopmentSupportRequiredException: Assertion failed for (handler != null) at com.sap.sdt.util.diag.SDT.check(SDT.java:36)
Check if the last /usr/sap/<SID>/<application server instance name>/j2ee/JSPM/trc/JSPM<_xx>.TRC file contains the following error message:
Syntax
[Error]: com.sap.sdt.tools.var.VariableAdmin [Thread[main,5,main]]: Unable to load variable handler for /<Name> : Could not load namespace /<Name> from file <Drive>:\usr\sap\<SID>\<Instance name>\j2ee\JSPM\data\variables\ <File name>.xml. org.xml.sax.SAXException has occurred: Fatal Error: com.sap.engine.lib.xml.parser.ParserException: Document is not well-formed: Start-tag StringValue is different from end-tag VariableHandler
This error message means that the following file is corrupted: /usr/sap/<SID>/<application server instance name>/j2ee/JSPM/data/variables/<File name>.xml.
This can happen if not enough disk space is available to store the file.
If necessary, free some disk space. For more information, see Requirements for Free Disk Space.
If a file in the /usr/sap/<SID>/<application server instance name>/j2ee/JSPM/data/variables directory is corrupted or is empty (size is 0), and if:
The file name contains MetaData, delete it and try to start JSPM again.
The file name does not contain MetaData, redeploy JSPM.
JSPM cannot be started. The following error message is displayed:
Syntax
Could not start JSPM. GUI connection port 50017 on localhost is already in use. Turn off the application, which uses this port or change the /dialog/SDTServerConnection/port property in the <Drive>:\usr\sap\<SID>\<Instance name>\j2ee\JSPM\param\ jspm_config.txt file.
Either another application or another running instance of JSPM is using the GUI connection port 5xx17, where xx is the instance number.
If another running instance of JSPM is using port 5xx17, use this instance or stop it.
If another application is using port 5xx17, in the /usr/sap/<SID>/<Instance name>/j2ee/JSPM/param/jspm_config.txt file, change the value of the /dialog/SDTServerConnection/port property by specifying a port that is currently not in use and try to start JSPM.
Connection failed to <host>:<port_number> when you started JSPM as a stand-alone tool on a Business ByDesign system.
There is also an error logged within the /usr/sap/<SID>/<InstanceID>/j2ee/JSPM/log/slcontroller/server.log file.
Syntax
Could not bind to port 5XX18. java.net.BindException: Address already in use
Note
Default port is tcp/5xx18, where xx is the instance ID number. For example 50118 if instanceID = 01.
At the moment JSPM was triggered by the go script another application had been using the port so the SDT server did not start and JSPM failed.
Ports 5xx19, 5xx18 and 5xx17 (where xx is the instance ID number) should be free.
The initialization of JSPM in brief goes this way:
JSPM starts
SDT Server is started
SDT Server starts SDT GUI that populates JSPM GUI
If one of the previous steps fails, JSPM will not come up with a GUI.
Free ports 5xx19, 5xx18, and 5xx17, where xx is the instance ID number.
Change the ports with free TCP ports as follows:
In sdtserver.xml (/usr/sap/<SID>/<InstanceID>/j2ee/JSPM/server directory) edit the entry ServerPort value with new SDT_server_port_value, as shown in the following example:
Example
<ServerSettings><ServerPort>SDT_server_port_value</ServerPort>
In sdtserver.xml (/usr/sap/<SID>/<InstanceID>/j2ee/JSPM/server directory) edit the entry HTTPPort value with new SDT_server_HTTP_port_value, as shown in the following example:
Example
<HTTPSettings> <HTTPMode>on</HTTPMode> <HTTPPort>SDT_server_HTTP_port_value</HTTPPort>
In jspm_config.txt (/usr/sap/<SID>/<InstanceID>/j2ee/JSPM/param directory) set JSPM_port, as shown in the following example:
Example
/dialog/SDTServerConnection/port = JSPM_port
Change ToolPort parameter in JSPM.xml file with the value set at step 3.
In JSPM.xml (/usr/sap/<SID>/<InstanceID>/j2ee/JSPM/server directory) edit the entry ToolPort value with new JSPM_port.
Example
<ToolPort> JSPM_port </ToolPort>
After checking for free TCP ports and performing the steps above the JSPM GUI should be able to start.
This workaround uses ports which are nonprivileged and are not reserved. At a later time the same ports might not work and they have to be changed once again.
When JSPM tool is started as a stand-alone tool on a clustered Business ByDesign system (more than one physical host behind virtual hostname) you get an error within the GUI: java.net.NoRouteToHostException No route to host <hostname>.
JSPM is not intended to be used as a stand-alone tool within a Business ByDesing scenario. The tests of the tool are performed regarding the Live Update so in such cases the tool should be stable.
In case you need to use the tool as a stand-alone application on a Business ByDesign system with clustering you may encounter the symptoms mentioned above.
The issue is related to improper host to IP resolution of the physical hostnames - if the physical hostnames are not accessible the tool will fail to initialize.
The behavior is due to the fact JSPM in such scenario (stand-alone tool) uses localhost by default to connect to SDT.
To fix the issue you need to alter some configuration within jspm.xml.
Under /usr/sap/<SID>/<application server instance>/j2ee/JSPM/server locate jspm.xml file. Open it for edit.
Into the <ToolSettings> section locate <ToolHost> parameter.
Change the value from 'localhost' to the virtual hostname used by the cluster.
Restart JSPM tool. When asked for <host>/<port>, enter the virtual hostname and SDT server port (default one 5<instance numer>18).