Den kode og markup-kode, der udløser det aktive hjælpelink, er ret lige til. Men hvad skal man gøre, hvis det aktive hjælpelink ikke fungerer?
Hvis implementeringen af funktionen er rimelig omfattende, skal du starte funktionen selv med testkode inde fra Eclipse. På den måde kan du være sikker på, at funktionen kan udføres uden fejl, inden du starter den fra JavaScript'et.
Du kan ændre "plugins/org.eclipse.help_2.1.0/liveHelp.js" for at inkludere et kald til alert-funktionen som den første sætning i funktionen liveAction:
function liveAction(pluginId, className, argument) { alert("liveAction called"); ...
Funktionen alert åbner en advarselsdialogboks i browseren, og den kan bruges til at kontrollere, om liveAction er startet korrekt i HTML Hvis der ikke vises en advarselsdialogboks, når du klikker på hjælpelinket, er der fejl i HTML-koden.
Når du ved, at JavaScript'et udføres, kan du finde fejl i funktionen inde fra Eclipse. For at gøre dette skal du angive et breakpoint i hjælpefunktionsklassen og starte en Eclipse-forekomst, som er vært for sig selv. Du skal afprøve den aktive hjælp med hjælpebrowseren fra den nyoprettede Eclipse-forekomst, men ikke fra værtsforekomsten, da JavaScript'et fra din hjælpe-HTML kalder en miniserver på den Eclipse- hjælpeserver, der startede browseren.
Hvis der ikke sker noget, når du har angivet et breakpoint og klikket på linket til den aktive hjælp, er plugin'en og den aktive hjælpeklasse sikkert ikke angivet korrekt i JavaScript'et.
Når du har stoppet ved breakpointet i funktionen, kan du finde fejl i funktionen, som du ville enhver anden Java-kode.
En almindelig runtime-fejl opstår, når der skal oprettes adgang til grænsefladekoden fra den programdel, der starter den aktive hjælp. Hvis live-hjælpefunktionen kommer fra kode, der oprindeligt er udført fra en programdel i grænsefladen, skal den ændres, så den kan udføres fra en programdel, der ikke er i grænsefladen.
public void run() { // Aktiv hjælp udføres ikke på grænsefladeprogramdelen og derfor bruges syncExec Display.getDefault().syncExec(new Runnable() { public void run() { //udfører grænsefladearbejdet her; } }); }