作者zanyking (遙遠的旅人)
看板java
標題Re: [問題] 請問有沒有人用過CDT
時間Fri Apr 16 00:19:41 2010
Eclipse 基本上可以說是一個Micro Kernal的Container。
它的每個模組的生命週期,載入、啟動、執行、關閉、卸載都是由Container在管,
而目前的Container的實做基本上是依據OSGI的規範。
(問一下qrtt1拉,我都快忘光光了)
你把所有的source copy到一個地方,然後就呼叫下去,希望他會動。
這就跟愛德華、阿爾馮斯兩兄弟根據他們娘的體重湊齊原料就想要搞禁斷的人體鍊成
一樣。
還好程式碼沒有生命,不會給你搞出Homunculus趴趴走,只會報錯而已。
※ 引述《ntouckcm (莉)》之銘言:
: 原本Plug-ins會產生一個runtime-New_configuration資料夾,裡面會產生設定好的
: .metadata資料夾 和 project 資料夾(也就是metadata area 和 data area)
: 我的想法是
: 以上的資料都先自動產生 ,然後 把要parse的c/c++程式檔 自動放在project裡
: 在電腦上的位置 去parse
: public static IFile execute(){
: IWorkspace ws = ResourcesPlugin.getWorkspace();
: IProject[] ps = ws.getRoot().getProjects();
: IFile ifile = null;
: for(int i=0;i<ps.length;i++){
: IProject p = ps[i]; //runtime-New_configuration底下的資料夾名稱
: IPath location = p.getLocation();
: ifile = p.getFile("SampleApp.bbcc"); //filename
: }
: return ifile;
: }
: public static void main(String[] args) {
: IFile inputFile=execute();
: ......................
: if (CoreModel.isTranslationUnit(inputFile)) {
: .......
: }
: }
: 但是出現一個問題
: Exception in thread "main" java.lang.IllegalStateException:
: Workspace is closed.
: at org.eclipse.core.resources.ResourcesPlugin.
: getWorkspace(ResourcesPlugin.java:340)
: at org.dworks.bbcdt.ui.action.main.execute(main.java:25)
: at org.dworks.bbcdt.ui.action.main.main(main.java:50)
: 上網查了一下
: 好像 一定要run 插件
: You have to run it from a run-time Eclipse/RCP application,
: and do the work in one of the Eclipse-supported methods.
: 這行才能work IWorkspace ws = ResourcesPlugin.getWorkspace();
: 我的問題是
: 不能指定絕對路徑 去parse嗎?
: EX:E:\\progSrc\runtime-New_configuration\project\file_name.bbcc 嗎?
: --------------------------------------------------------------------------
: public IFile execute(){
: 和以上相同....
: ifile = p.getFile("SampleApp.bbcc");
: .........
: }
: public void run(IAction action) {
: ...........以上相同
: }
: 這樣可以不用在new 新的project和建新的file
: 把file放在runtime-New_configuration然後指定檔名,就可以parse。
: 但是目標是可以從main開啟
: 這只是我的想法~請大大幫我看~ 有甚麼問題~~
: 有沒有甚麼方法可以解決目前的問題,或者此路根本行不通,或者有別的看法~~
: 給我些建議或指引!!
: 謝謝大家!!
此路不通拉。
你最先要做的,是將你的需求明確的條列出來,根據你的需求建立起你的東西到時候
要滿足的條件列表。
像這種類似把體細胞移植到受精卵裡根本就是在製造桃麗羊的手術(誤),你很難確定
程式碼裡頭是否潛藏著你不曉得的機制。所以你切割出來的區塊越小、你對切出來的
部份的程式碼掌握度越高,你就越有可能成功。
可行的作法是:
創建一個Eclipse Plugin Project 在一個完全沒有CDT的開發環境裡。
然後把CDT的設定還有原始碼給丟進去,Eclipse一定會報一堆錯,那就觀察總共有哪些
CDT需要依賴的Plugin,然後CDT怎麼依賴他們。
嘗試手動的把所有需要滿足的資源給找齊,檢驗一下CDT是不是還跑得起來。
這步很重要,除非你一直有在確保CDT可以動、可以生成你要的ASTree,你才能開始把
你不需要得部份砍掉或置換掉。不然你作到後來才發現CDT裡面的機制已經死掉了,
那也是白搭。
不要一開始就悶著頭跳下去改程式,先分析總結一下總共有哪些Framework是CDT的
ASTree 生成需要依賴的,你得先建立清楚的系統模型,搞懂生命週期,才能嘗試將
他們分離開來。
接下來是最重要的:
將你覺得最小的CDT程式碼集合給拔出來,你之前功課做的有多足、經驗值有多少,
你這一步成功的機率就有多少。
不管如何,你一定會發現你常常缺了胳膊少了腿,到時候你得清楚記得你是從哪邊把
這個部份切出來的,而此時你有兩種選擇:
1. 去原本的地方挖程式貼過來。
優點:這是之前確實會動得東西,別人跑過測過。
缺點:貼程式碼過來最可能發生的就是連一拉一,拉一顆蕃薯結果整座田都
在動。
2. 建立起你的機制,將原先CDT所依賴的Eclipse 底層給偷樑換柱。
優點:自己寫得東西,自己當然清楚。
缺點:費工、而且你不曉得你的實做是否符合API當初開的規格。
(寫Eclipse Plugin的人,不知為啥,都是不喜歡寫文件跟註解的。)
這一步是動最大的,你將有很長的時間不能給他跑下去確定對不對,你只能Dive & Digg
然後祈禱。
最後,你應該要想一下,你或你老闆當初對這玩意的估計是不是太過樂觀。
我是曾經幹過這種事情的人(ZK Studio我開發了一年),我想我的建議多少有點價值。
而我能跟你說的是,你需要至少兩個月的焚膏繼晷與好運。
Good Luck
--
我所信仰的科學是一種謙卑的理性,承認自身的無知與渺小才能觀察到世界在我們貧
弱的知覺上留下來的痕跡。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.194.139.116
→ zanyking:喔,對了,我估時程一向是無可救藥的樂觀的。 04/16 00:21
→ kene:原po讓我回想起了我的碩班生活 orz 拆解 eclipse 真的很累 04/16 00:27
推 PsMonkey:這篇都不知道該不該 m,m 了也不知道要放哪裡 XDXD 04/16 00:47
推 AmosYang:"拉一顆蕃薯結果整座田都在動。" 說的好! XD 04/16 01:32
推 sw12:m了放在eclipse.... 04/16 02:27
→ qrtt1:俺一定是看到了控制碼 (暈) 04/16 08:04
推 ntouckcm:Orz........... 04/16 08:17
推 ntouckcm:謝謝大大^o^ 04/16 17:12