3

プログラムで起動できる 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 がないためだと思われます。

この問題を回避する方法を知っている人はいますか? 乾杯!

4

2 に答える 2

1

ManagementClient など、見つからないクラスは何ですか? おそらく、起動構成でターゲットクラスパスを自分で設定する必要があります。

// customize the classpath
wc.setAttribute(IJavaLaunchConfigurationConstants.ATTR_DEFAULT_CLASSPATH, false);
wc.setAttribute(IJavaLaunchConfigurationConstants.ATTR_CLASSPATH, classPathList);

役に立つかもしれないその他の設定を次に示します。

 wc.setAttribute(IJavaLaunchConfigurationConstants.ATTR_PROJECT_NAME, 
    projectName);
 wc.setAttribute(IJavaLaunchConfigurationConstants.ATTR_MAIN_TYPE_NAME, 
    targetMainClass);
 wc.setAttribute(IJavaLaunchConfigurationConstants.ATTR_PROGRAM_ARGUMENTS,
    programArgs);
 wc.setAttribute(IJavaLaunchConfigurationConstants.ATTR_VM_ARGUMENTS, jvmArgs);
于 2009-12-07T03:33:05.027 に答える
0

構成を起動するボタンが必要なのはなぜですか? 言及した拡張ポイントを拡張すると、起動構成がEclipseのデバッグメニューに表示されるはずです...別のボタンは必要ありません!?

これとは別に、「ManagementClient」を含むプラグインの依存関係を確認します。「NoSuchClassDefException」は、ほとんどの場合、依存関係の定義が間違っている結果です (依存関係の順序が間違っている可能性があります [UI プラグインの前のコア プラグイン] ... または、クラスが完全にプラグインに含まれていませんか?)。

于 2009-12-07T08:09:23.693 に答える