DebugPlugin.exec()

时间:2015-08-05 12:35:45

标签: java eclipse ant

我试图了解DebugPlugin.exec(String[] cmdLine, File workingDirectory)方法究竟是做什么的。

我第一次在文章How to write an Eclipse debugger中遇到过这种方法。

插件:核心,包:pda.launching,类:PDALaunchDelegate,方法:启动

commandList.add(file.getLocation().toOSString()); 
int requestPort = -1;
int eventPort = -1;
if (mode.equals(ILaunchManager.DEBUG_MODE)) {
    requestPort = findFreePort();
    eventPort = findFreePort();
    if (requestPort == -1 || eventPort == -1) {
        abort("Unable to find free port", null);
    }
    commandList.add("-debug");
    commandList.add("" + requestPort );
    commandList.add("" + eventPort );
} 
String[] commandLine = (String[]) 
commandList.toArray(new String[commandList.size()]);
Process process = DebugPlugin.exec(commandLine, null);
IProcess p = DebugPlugin.newProcess(launch, process, path);
if (mode.equals(ILaunchManager.DEBUG_MODE)) {
    IDebugTarget target = new PDADebugTarget(launch,p,requestPort,eventPort );
    launch.addDebugTarget(target);
}

现在,我已经看到该方法再次通过Ant插件中的AntLaunchDelegate类。我不能得到的是commandline。是否执行了一组指令?我已经查看了DebugPlugin API,但我还没有完全理解它。

1 个答案:

答案 0 :(得分:1)

所有这个方法都是调用运行程序的Java Runtime.getRuntime().exec方法。该方法对发生的任何错误添加了一些处理。

字符串数组中的第一个条目是要执行的程序的完整路径,数组的其余部分是要传递给程序的参数。

所以数组

new String[] {"/bin/ls", "-l"};

将指定使用参数/bin/ls运行-l命令。