作者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
1F:→ zanyking:喔,对了,我估时程一向是无可救药的乐观的。 04/16 00:21
2F:→ kene:原po让我回想起了我的硕班生活 orz 拆解 eclipse 真的很累 04/16 00:27
3F:推 PsMonkey:这篇都不知道该不该 m,m 了也不知道要放哪里 XDXD 04/16 00:47
4F:推 AmosYang:"拉一颗蕃薯结果整座田都在动。" 说的好! XD 04/16 01:32
5F:推 sw12:m了放在eclipse.... 04/16 02:27
6F:→ qrtt1:俺一定是看到了控制码 (晕) 04/16 08:04
7F:推 ntouckcm:Orz........... 04/16 08:17
8F:推 ntouckcm:谢谢大大^o^ 04/16 17:12