J'essaie de créer une configuration de lancement Eclipse que je peux lancer par programme, comme construire un débogueur personnalisé si vous le souhaitez.Comment faire un lanceur de débogage Eclipse qui lance une classe
J'ai déjà une extension org.eclipse.debug.core.launchConfigurationTypes
, ainsi que les extensions .core.launchDelegates
, .ui.launchConfigurationTabGroups
et .core.sourcePathComputers
.
J'ai un bouton qui exécute le code suivant:
ILaunchManager mgr = DebugPlugin.getDefault().getLaunchManager();
ILaunchConfigurationType lct = mgr.getLaunchConfigurationType(IOpcodeConstants.LAUNCH_CFG_TYPE);
ILaunchConfiguration[] lcs = mgr.getLaunchConfigurations(lct);
for (int i = 0; i < lcs.length; ++i) {
if (lcs[i].getName().equals("Opcode")) {
lcs[i].delete();
break;
}
}
ILaunchConfigurationWorkingCopy wc = lct.newInstance(null, "Opcode");
Set<String> modes = new HashSet<String>();
modes.add(ILaunchManager.DEBUG_MODE);
wc.setModes(modes);
wc.setPreferredLaunchDelegate(modes, "nz.net.fantail.studio.OpcodeLaunchDelegate");
ILaunchConfiguration lc = wc.doSave();
lc.launch(ILaunchManager.DEBUG_MODE, null);
Mon délégué de lancement a le code suivant:
@Override
public void launch(ILaunchConfiguration configuration, String mode,
ILaunch launch, IProgressMonitor monitor) throws CoreException {
ManagementClient client = new ManagementClient("localhost", 6961);
if (mode.equals(ILaunchManager.DEBUG_MODE)) {
IDebugTarget target = new OpcodeDebugTarget(launch, client);
launch.addDebugTarget(target);
}
}
Tout fonctionne parfaitement bien jusqu'à obtenir essaie de charger la classe ManagementClient et lance une exception NoSuchClassDefException. Je soupçonne que c'est parce qu'il se lance dans un environnement séparé de l'application réelle et en tant que tel n'a pas le .jar avec la classe dans son chemin de classe.
Est-ce que quelqu'un sait comment contourner ce problème? À votre santé!
Hé, merci pour ça! C'est la classe ManagementClient qu'elle ne peut pas trouver. Cependant, je ne semble pas avoir IJavaLaunchConfigurationConstants - je jetterai un coup d'oeil dès que possible, probablement je n'ai pas son plugin dans le chemin source. À votre santé! –