Hinweise zur Fehleranalyse der aktiven Hilfe

Der Code und die Befehle, die den Link der aktiven Hilfe auslösen, sehen relativ einfach strukturiert aus. Für den Fall, dass der Link der aktiven Hilfe jedoch nicht zu funktionieren scheint, können Sie die folgenden Aspekte überprüfen.

Aktion vorzeitig testen

Falls die Implementierung der Aktion häufig verwendet wird, sollten Sie die Aktion selbst mit einem Testcode innerhalb von Eclipse aufrufen. Auf diese Weise können Sie sicherstellen, dass die Aktion fehlerlos ist, bevor Sie sie aus dem JavaScript heraus aufrufen.

Ausführung des JavaScripts sicherstellen

Durch die Änderung von "plugins/org.eclipse.help_2.1.0/liveHelp.js" können Sie einen Aufruf der Funktion alert als erste Anweisung in die Funktion liveAction aufnehmen:

function liveAction(pluginId, className, argument)
{
	alert("liveAction called");
	...

Die Funktion alert öffnet im Browser einen Dialog mit einer Warnung und kann verwendet werden, um den ordnungsgemäßen Aufruf der Funktion liveAction im HTML zu überprüfen.   Falls beim Klicken auf den Hilfelink kein Dialog mit einer Warnung ausgegeben wird, liegt ein Fehler in den HTML-Befehlen vor.

Aktion der aktiven Hilfe debuggen

Sobald Sie wissen, dass das JavaScript ausgeführt wird, können Sie innerhalb von Eclipse ein Debug für Ihre Aktion ausführen.   Hierzu können Sie einen Unterbrechungspunkt in der Klasse für die Hilfeaktion definieren und ein Eclipse-Exemplar starten, das sich selbst als Host verwendet.  Sie müssen die aktive Hilfe mit dem Hilfebrowser aus dem neu gestarteten Eclipse-Exemplar heraus testen und dürfen hierzu nicht das Hostexemplar verwenden, weil das JavaScript aus dem Hilfe-HTML ein Servlet auf dem Eclipse-Hilfeserver aufruft, der den Browser gestartet hat.

Falls nichts passiert, nachdem Sie den Unterbrechungspunkt definiert und auf den Link der aktiven Hilfe geklickt haben, sind das Plug-in und die Klasse für die aktive Hilfe im JavaScript wahrscheinlich nicht korrekt angegeben.

Sobald Sie das Stoppen am Unterbrechungspunkt in der Aktion ausgeführt haben, können Sie ein Debug für die Aktion wie für jeden anderen Java-Code ausführen.

Einbettung von UI-Code in Display.syncExec sicherstellen

Ein gängiges Laufzeitproblem ist ein falscher Zugriff auf UI-Code aus dem Thread, der die aktive Hilfe aufruft.   Falls Ihre Aktion für die aktive Hilfe aus Code stammt, der ursprünglich in einem Thread ausgeführt wurde, ist eine Änderung erforderlich, damit der Code aus einem Nicht-UI-Thread heraus ausgeführt wird.  

      public void run() {
          // Aktive Hilfe wird nicht im UI-Thread ausgeführt. Daher muss syncExec verwendet werden.
		Display.getDefault().syncExec(new Runnable() {
      public void run() {
								//UI-Funktion hier ausführen;
							}
		});		
	}

Copyright IBM Corporation und Andere 2000, 2003.