在Eclipse可以启动多个java进程,并对java进程的运行状况进行监控,这些都有几个主要框架合作完成
其中包括:
org.eclipse.jdt.launch:java程序启动框架
org.eclipse.debug.core:除Eclipse本身进程外,其他进程的核心运行态
org.eclipse.core.runtime:提供对运行期的进程的监控及Runtime支持
在jdt的launch框架中,internal.launching包是launching包的实现
launching包中的AbstractVMRunner,是各种VM的主要基类,它将进程推入到Eclipse的debug框架,以便在其中执行
VMRunner的run(VMRunnerConfiguration config, ILaunch launch, IProgressMonitor monitor)方法:
在AbstractVMRunner的实现类中,将实现其继承自IVMRunner的run(…)方法以便生成java进程并使用Eclipse的debug框架中的IProcess进行包装,IProcess表示一个java进程是以normal运行态而不是以Debug状态运行,同时启动传入的IProgressMonitor生成子监控器(SubProgressMonitor)对包装后的IProcess进行监控。
真正的启动操作,则是在Eclispe的debug.core中的DebugPlugin中的exec方法中
也就两行代码:
if (workingDirectory == null) {
p= Runtime.getRuntime().exec(cmdLine, envp);
} else {
p= Runtime.getRuntime().exec(cmdLine, envp, workingDirectory);
}
而其余的就全都是监控了
而启动的过程,则是在launching包中的JavaLaunchDelegate类中,就只有一个方法launch:
包括设置环境变量、监控器、文件目录验证等等都在这了