Я пытаюсь создать конфигурацию запуска Eclipse, которую я могу запускать программно, вроде создания собственного отладчика, если хотите.
У меня уже есть расширение org.eclipse.debug.core.launchConfigurationTypes
, а также расширения .core.launchDelegates
, .ui.launchConfigurationTabGroups
и .core.sourcePathComputers
.
У меня есть кнопка, которая выполняет следующий код:
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);
Мой делегат запуска имеет следующий код:
@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);
}
}
Все работает отлично, пока get не попытается загрузить класс ManagementClient и не выдаст исключение NoSuchClassDefException. Я подозреваю, что это потому, что он запускается в отдельной среде от реального приложения и поэтому не имеет .jar с классом в своем classpath.
Кто-нибудь знает, как обойти эту проблему? Ура!