0

ラッパーを作成し、 this を拡張JavaLaunchDelegateする新しいを作成しました。ZLaunchConfigurationDelegateこのラッパーでは、終了に失敗することがあるをLaunch使用して、以前の実行を終了しようとしました。Launch.terminate

Java コード :

public static ILaunch getLaunchObject(String launchName) {
    ILaunch launchObj = null;
    ILaunchManager launchManager = DebugPlugin.getDefault().getLaunchManager();
    ILaunch[] launches = launchManager.getLaunches();
    for(int i=0 ; i<launches.length ; i++) {
        ILaunch launch = launches[i];
        ILaunchConfiguration config = launch.getLaunchConfiguration();
        if(config != null) {
            String configName = config.getName();
            if(configName.equals(serviceName)) {
                launchObj = launch;
                break;
            }
        }

    }
    return launchObj;
}

public static void terminateLaunch(String launchName){
    ILaunch launch = getLaunchObject(launchName);
    if(launch != null){
        launch.terminate();
    }
}

terminateLaunch("mylaunch");

うまくいかない場合はプロセスを強制終了したいlaunch.terminate

ゴール

eclipse launch object からプロセス ID を取得した場合。os コマンドを使用してプロセスを強制終了します。

起動オブジェクトからプロセス ID を取得する方法はありますか?

ありがとうございました 、

関南

4

1 に答える 1

0

最初にすべてのプロセスとデバッグ ターゲットを強制終了して (この Launch がデバッグ モードの場合)、Launch を終了します。

private void terminate(ILaunch launch){
    try{
        IProcess [] processList = launch.getProcesses();
        for(IProcess process : processList) {
            if( ! process.isTerminated() ) {
                process.terminate();                    
            }               
            launch.removeProcess(process);
        }

        IDebugTarget [] debugTargetList = 
            launch.getDebugTargets();
        for(IDebugTarget debugTarget : debugTargetList) {
            launch.removeDebugTarget(debugTarget);
        } 

        launch.terminate();

    }catch(Exception ex) {
       // Exception
    }
 }
于 2013-01-10T09:35:46.543 に答える