我想了解DebugPlugin.exec(String[] cmdLine, File workingDirectory)
方法到底是做什么的。
我第一次遇到这个方法是在文章《如何编写Eclipse调试器》中。
插件:core,包:pda。启动,类:PDALaunchDelegate,方法:launch
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,但我不完全理解它。
这个方法所做的就是调用运行程序的Java Runtime.getRuntime().exec
方法。该方法对发生的任何错误添加一些处理。
字符串数组中的第一个条目是要执行的程序的完整路径,数组的其余部分是传递给程序的参数。
那么数组
new String[] {"/bin/ls", "-l"};
将指定使用参数-l
运行/bin/ls
命令。