在Eclipse可以啟動多個java進(jìn)程,并對java進(jìn)程的運行狀況進(jìn)行監(jiān)控,這些都有幾個主要框架合作完成
其中包括:
org.eclipse.jdt.launch:java程序啟動框架
org.eclipse.debug.core:除Eclipse本身進(jìn)程外,其他進(jìn)程的核心運行態(tài)
org.eclipse.core.runtime:提供對運行期的進(jìn)程的監(jiān)控及Runtime支持
在jdt的launch框架中,internal.launching包是launching包的實現(xiàn)
launching包中的AbstractVMRunner,是各種VM的主要基類,它將進(jìn)程推入到Eclipse的debug框架,以便在其中執(zhí)行
VMRunner的run(VMRunnerConfiguration config, ILaunch launch, IProgressMonitor monitor)方法:
在AbstractVMRunner的實現(xiàn)類中,將實現(xiàn)其繼承自IVMRunner的run(…)方法以便生成java進(jìn)程并使用Eclipse的debug框架中的IProcess進(jìn)行包裝,IProcess表示一個java進(jìn)程是以normal運行態(tài)而不是以Debug狀態(tài)運行,同時啟動傳入的IProgressMonitor生成子監(jiān)控器(SubProgressMonitor)對包裝后的IProcess進(jìn)行監(jiān)控。
真正的啟動操作,則是在Eclispe的debug.core中的DebugPlugin中的exec方法中
也就兩行代碼:
if (workingDirectory == null) {
p= Runtime.getRuntime().exec(cmdLine, envp);
} else {
p= Runtime.getRuntime().exec(cmdLine, envp, workingDirectory);
}
而其余的就全都是監(jiān)控了
而啟動的過程,則是在launching包中的JavaLaunchDelegate類中,就只有一個方法launch:
包括設(shè)置環(huán)境變量、監(jiān)控器、文件目錄驗證等等都在這了
聲明一個空的工作區(qū),在命令行加入-data newworkspace
PDE(Plug-In Development Environment插件開發(fā)環(huán)境), JDT(Java Development Tool Java開發(fā)工具)
Eclipse的層次結(jié)構(gòu):
PDE:
Plugin.xml:
id屬性是全局唯一的插件標(biāo)識,最好用包名來表示。
name屬性是方便人閱讀的插件名稱。
每個按鈕背后都有一個Action對象提供支持,當(dāng)按鈕被按下時,這個對象就被調(diào)用。工具欄中的按鈕被分為多個組,每個組叫做一個動作集(action set)。如果動作要讓以按鈕的形式出現(xiàn),就必須將其與工具欄路徑相關(guān)聯(lián),在action加入toolbarPath=”helloGroup”,如果有別的動作已經(jīng)放到helloGroup工具欄的欄目中時,我們新加入的將會出現(xiàn)在那個按鈕的旁邊。如果以前沒有helloGroup,則會建立一個helloGroup工具欄欄目。
Eclipse啟動時會將所有的插件清單文件讀入一個插件注冊表中,為每個插件創(chuàng)建一個投影。此時插件本身不會被加載,只加載它們的描述信息,調(diào)用Platform類的getPluginRegistry()方法就可以得到這個投影世界的內(nèi)容。
動作必須實現(xiàn)的接口是IworkbenchWindowDelegate,而當(dāng)你要為工作臺里的一個Java對象增加一個動作時,你必須實現(xiàn)IobjectActiveDelegate接口。