<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Feeling

        三人行,必有我師焉

       ::  :: 新隨筆 :: 聯系 ::  :: 管理 ::
      185 隨筆 :: 0 文章 :: 392 評論 :: 0 Trackbacks

    網上關于Eclipse Fragment的資料比較少,引用Eclipse Wiki的一段話:

    An Eclipse Fragment is a way of putting your own classes into the "class loader" of another package (basically, it's as though your class was actually in the other package). If you combine this ability of a Fragment with the notion of a plugin's classpath ordering, then you can force your class to load before a like-named class in the original package.

    簡而言之,Fragment可以利用Eclipse平臺的ClassLoader機制替換原有Plugin的某些文件,以便實現自己的功能。如果僅僅是因為Plugin擴展,而需要替換自己項目的某些Plugin,可以參考文章:

    http://wiki.eclipse.org/Steps_to_use_Fragments_to_patch_a_plug-in  (來之不易,感興趣的可以收藏下)

    讀完這篇文章,你大概就應該能夠了解到Fragment的實現分為兩部分:Host 和 Patch。這兩部分對應的plugin的manifest.mf文件都需要做特殊處理,對于Patch的build方式也要特殊處理,那就是build出來的plugin jar里放置的不是松散的class文件,而是一個特殊的jar文件,這個 jar 文件定義在Host plugin的manifest.mf 的classpath里面。

    通常情況下,按照這篇文章的做法是沒有問題的。但是在開發階段,有一種情況可能無法實現class的替換。

    我公司的項目是使用perforce進行項目版本控制的,但是perforce比較傻,有些重要的功能沒有實現,而又很關鍵,因此我想自己針對perforce的eclipse plugin做一個fragment,添加自己想要的功能。但是這個plugin沒有source code,而我自己的hack也是反編譯class文件進行的。所以在我的work space里,并沒有Host plugin的 project。結果按照這篇文章的做法,始終不能在workbench debug的狀態下,正確load我hack過的class。因為在代碼模式下面是可以正確load的,而現在沒有代碼,在數次檢驗無果之后,只能針對ClassLoader去思考了。Host文件里要求一個jar文件,我就用PDE 將 fragment export出來,把Fragment plugin jar 包里包含的那個 jar 文件解壓出來,放到 patch project 里,然后重新Debug, OK,這次果然沒問題了。一個小小的Class Loader問題,真的能夠要人命呀……這應當算是Eclipse的一個bug吧,除非是對一個Plugin進行hack,否則一般也不會碰到這種情況。普通的項目開發,肯定會包含Host Plugin的Project。

    我的經歷權且當做飯后談資,不足為慮。我這兒想說的是Fragment機制非常好用,也易于Plugin擴展。比如你的項目分為Open Source 和 Commercial 2種的話, Commercial 部分也可以通過Fragment來實現,不一定需要走Extension Point路線。由于網上相關文章不多,還需要自己多多研究,了解其機制。

    posted on 2009-09-10 16:42 三人行,必有我師焉 閱讀(1742) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    GitHub |  開源中國社區 |  maven倉庫 |  文件格式轉換 
    主站蜘蛛池模板: 一区二区免费电影| 99视频精品全部免费观看| 国产亚洲精品一品区99热| 99精品视频免费在线观看| 亚洲精品无码人妻无码| 亚洲中文久久精品无码ww16| 日本免费一区二区在线观看| 男男gay做爽爽的视频免费| 亚洲国产一区二区三区青草影视| AV免费网址在线观看| 中文字幕在线免费看| 国产精品亚洲五月天高清| 久久亚洲精品国产亚洲老地址| 久久亚洲精品成人AV| 国产l精品国产亚洲区在线观看| 四虎永久在线精品免费观看地址| 中文字幕无码免费久久99| 91福利视频免费观看| 暖暖免费日本在线中文| 免费无码又爽又刺激网站直播| 一级特黄色毛片免费看| 思思久久99热免费精品6| 国产亚洲视频在线播放大全| 色天使亚洲综合一区二区| 色综合久久精品亚洲国产| 亚洲日韩精品无码专区加勒比☆| 亚洲人成毛片线播放| 亚洲日韩国产精品乱-久| 77777亚洲午夜久久多喷| 亚洲香蕉在线观看| 亚洲 暴爽 AV人人爽日日碰 | 国产成人无码区免费网站| 国产三级在线免费观看| 日韩电影免费在线观看网址| 亚洲色偷偷偷网站色偷一区| 亚洲熟妇无码八AV在线播放| 亚洲国产91精品无码专区| 国产又黄又爽又猛的免费视频播放 | 国产精品玖玖美女张开腿让男人桶爽免费看| 亚洲免费观看在线视频| 亚洲五月六月丁香激情|