在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:
包括设置环境变量、监控器、文件目录验证等等都在这了
声明一个空的工作区,在命令行加入-data newworkspace
PDE(Plug-In Development Environment插件开发环境), JDT(Java Development Tool Java开发工具)
Eclipse的层次结构:
PDE:
Plugin.xml:
id属性是全局唯一的插件标识,最好用包名来表示。
name属性是方便人阅读的插件名称。
每个按钮背后都有一个Action对象提供支持,当按钮被按下时,这个对象就被调用。工具栏中的按钮被分为多个组,每个组叫做一个动作集(action set)。如果动作要让以按钮的形式出现,就必须将其与工具栏路径相关联,在action加入toolbarPath=”helloGroup”,如果有别的动作已经放到helloGroup工具栏的栏目中时,我们新加入的将会出现在那个按钮的旁边。如果以前没有helloGroup,则会建立一个helloGroup工具栏栏目。
Eclipse启动时会将所有的插件清单文件读入一个插件注册表中,为每个插件创建一个投影。此时插件本身不会被加载,只加载它们的描述信息,调用Platform类的getPluginRegistry()方法就可以得到这个投影世界的内容。
动作必须实现的接口是IworkbenchWindowDelegate,而当你要为工作台里的一个Java对象增加一个动作时,你必须实现IobjectActiveDelegate接口。