wadise

          BlogJava 首頁(yè) 新隨筆 聯(lián)系 聚合 管理
            22 Posts :: 0 Stories :: 6 Comments :: 0 Trackbacks

          Eclipse可以啟動(dòng)多個(gè)java進(jìn)程,并對(duì)java進(jìn)程的運(yùn)行狀況進(jìn)行監(jiān)控,這些都有幾個(gè)主要框架合作完成

           

          其中包括:

           

                 org.eclipse.jdt.launchjava程序啟動(dòng)框架

                 org.eclipse.debug.core:除Eclipse本身進(jìn)程外,其他進(jìn)程的核心運(yùn)行態(tài)

                 org.eclipse.core.runtime:提供對(duì)運(yùn)行期的進(jìn)程的監(jiān)控及Runtime支持

           

          jdtlaunch框架中,internal.launching包是launching包的實(shí)現(xiàn)

          launching包中的AbstractVMRunner,是各種VM的主要基類,它將進(jìn)程推入到Eclipsedebug框架,以便在其中執(zhí)行

           

          VMRunnerrun(VMRunnerConfiguration config, ILaunch launch, IProgressMonitor monitor)方法:

          AbstractVMRunner的實(shí)現(xiàn)類中,將實(shí)現(xiàn)其繼承自IVMRunnerrun()方法以便生成java進(jìn)程并使用Eclipsedebug框架中的IProcess進(jìn)行包裝,IProcess表示一個(gè)java進(jìn)程是以normal運(yùn)行態(tài)而不是以Debug狀態(tài)運(yùn)行,同時(shí)啟動(dòng)傳入的IProgressMonitor生成子監(jiān)控器(SubProgressMonitor)對(duì)包裝后的IProcess進(jìn)行監(jiān)控。

           

          真正的啟動(dòng)操作,則是在Eclispedebug.core中的DebugPlugin中的exec方法中

          也就兩行代碼:

           

                               if (workingDirectory == null) {

                                      p= Runtime.getRuntime().exec(cmdLine, envp);

                               } else {

                                      p= Runtime.getRuntime().exec(cmdLine, envp, workingDirectory);

                               }

           

          而其余的就全都是監(jiān)控了

           

          而啟動(dòng)的過程,則是在launching包中的JavaLaunchDelegate類中,就只有一個(gè)方法launch

           

          包括設(shè)置環(huán)境變量、監(jiān)控器、文件目錄驗(yàn)證等等都在這了

          聲明一個(gè)空的工作區(qū),在命令行加入-data newworkspace

           

          PDE(Plug-In Development Environment插件開發(fā)環(huán)境), JDT(Java Development Tool  Java開發(fā)工具)

          Eclipse的層次結(jié)構(gòu):

           eclipse1.JPG

          PDE:

          Plugin.xml:

          id屬性是全局唯一的插件標(biāo)識(shí),最好用包名來(lái)表示。

          name屬性是方便人閱讀的插件名稱。

           

           

          每個(gè)按鈕背后都有一個(gè)Action對(duì)象提供支持,當(dāng)按鈕被按下時(shí),這個(gè)對(duì)象就被調(diào)用。工具欄中的按鈕被分為多個(gè)組,每個(gè)組叫做一個(gè)動(dòng)作集(action set)。如果動(dòng)作要讓以按鈕的形式出現(xiàn),就必須將其與工具欄路徑相關(guān)聯(lián),在action加入toolbarPath=”helloGroup”,如果有別的動(dòng)作已經(jīng)放到helloGroup工具欄的欄目中時(shí),我們新加入的將會(huì)出現(xiàn)在那個(gè)按鈕的旁邊。如果以前沒有helloGroup,則會(huì)建立一個(gè)helloGroup工具欄欄目。

           eclipse2.JPG

           

          Eclipse啟動(dòng)時(shí)會(huì)將所有的插件清單文件讀入一個(gè)插件注冊(cè)表中,為每個(gè)插件創(chuàng)建一個(gè)投影。此時(shí)插件本身不會(huì)被加載,只加載它們的描述信息,調(diào)用Platform類的getPluginRegistry()方法就可以得到這個(gè)投影世界的內(nèi)容。

           

          動(dòng)作必須實(shí)現(xiàn)的接口是IworkbenchWindowDelegate,而當(dāng)你要為工作臺(tái)里的一個(gè)Java對(duì)象增加一個(gè)動(dòng)作時(shí),你必須實(shí)現(xiàn)IobjectActiveDelegate接口。

          posted on 2005-12-20 14:12 wadise 閱讀(765) 評(píng)論(0)  編輯  收藏 所屬分類: Eclipse
          主站蜘蛛池模板: 宜宾县| 阿鲁科尔沁旗| 定州市| 咸阳市| 和政县| 宁南县| 桓仁| 卢龙县| 滨海县| 灌阳县| 遵义县| 嘉定区| 寿宁县| 沂源县| 长丰县| 昆山市| 建平县| 哈巴河县| 甘德县| 尼勒克县| 通江县| 天台县| 盘山县| 盐亭县| 龙江县| 碌曲县| 姜堰市| 民丰县| 万安县| 攀枝花市| 开封县| 岐山县| 神池县| 义马市| 乌什县| 连南| 静乐县| 苏尼特左旗| 苗栗市| 武乡县| 抚松县|