??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲沟沟美女亚洲沟沟,亚洲一区无码精品色,国产AV无码专区亚洲AWWWhttp://www.tkk7.com/Vencent/category/7756.html<font color='orange'>本博客仅为收集所用。在此对原作者表C感谢?lt;/font> <div class="custom"> <script type="text/javascript"><!-- google_ad_client = "pub-6256612161572960"; google_ad_width = 728; google_ad_height = 90; google_ad_format = "728x90_as"; google_ad_type = "text"; google_ad_channel =""; google_page_url = document.location; google_color_border = ["FFDDAA","FFDDAA","FFDDAA","FFDDAA"]; google_color_bg = ["FFDDAA","FFDDAA","FFDDAA","FFDDAA"]; google_color_link = ["FFDDAA","0033FF","00008B","99CC33"]; google_color_url = ["999999","0033FF","00008B","FFCC00"]; google_color_text = ["0033FF","AA9999","0033FF","AA9999"]; //--></script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script></div>zh-cnWed, 28 Feb 2007 03:24:34 GMTWed, 28 Feb 2007 03:24:34 GMT60也谈Eclipse中的q程调试http://www.tkk7.com/Vencent/articles/52833.htmlVincent ChenVincent ChenWed, 14 Jun 2006 11:49:00 GMThttp://www.tkk7.com/Vencent/articles/52833.htmlhttp://www.tkk7.com/Vencent/comments/52833.htmlhttp://www.tkk7.com/Vencent/articles/52833.html#Feedback0http://www.tkk7.com/Vencent/comments/commentRss/52833.htmlhttp://www.tkk7.com/Vencent/services/trackbacks/52833.html

问题的由来:qx的开发,我们基本都是?/span> Debug ? 式下做的Q这样便于发现问题给于修正。一旦项目到了实施测阶段Q程序被部v到服务器上,现场调试׃成ؓ一个问题。因部v的服务器上的日志往往不能? 供够的信息Q或是有了够的信息Q可x惛_C个状态点的信息又不是太容易(比如说几个关键变量的x|。于是想刎ͼ如果可以象本试程序一样就 好了?span lang="EN-US">

于是Q呵呵,又是于是Q, google 了一下,真得q是扑ֈ了一文章(先谢谢了Q,做法?span lang="EN-US">

只要?/span> TOMCAT 的启动文件中加入一些参数就可以?/span> ECLIPSE 中启?/span> REMOTE_DEBUG 了,具体Ҏ如下Q?/span>
?/span> %TOMCAT_HOME%\bin\catalina.bat 文g中加?/span> SET CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9046 ?/span>
打开 ECLIPSE Q在 ECLIPSE ?/span> RUN 菜单中选择 DEBUG... ,然后在左边的树Ş菜单中新增一?/span> REMOTE_DEBUG( q程调试 ) Q填 写最基本的几信息就行了Q这几项信息是:调试名称Q工E名Uͼ调试L?/span> URL 以及 PORT Q在 allow terminate of remote VM 前打上勾 . 最主要的就是端口信息,q个端口信息来自于上面那一串参C?/span> address ,可以?/span> address 讄ZQ何未被占用的端口?/span>
以控制台方式启动 TOMCAT Q可以在控制台看?/span> "Listening for transport dt_socket at address: 5888" q样的信息,说明调试端口已经被监听。然后打开之前讄的调试ƈ?/span> IE 或?/span> ECLIPSE 内置的浏览器中输?/span> URL q行 WEB E序Q记得在q行 WEB E序之前要设|断炏V?/span>
现在可以在 ECLIPSE 中进?/span> WEB 调试?/span> ...

要说明的是:

我ƈ没按上文那样讄变量。我看了 catalina.bat q个批处理文Ӟ写的很严谨,环境变量讄有它自己的规范,我不x攏V在q个文g我看Cq么一个名?/span> setenv.bat 。对了,看到它你q道,你可以徏立这么一个文件把 SET CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9046 放进去,OK啦。但q是只是 windows 中的作法?span lang="EN-US">

岔开说一句话。其实,上面的参数设|ƈ不是都需要的Q主要的׃: transport ?/span> address Q对应于 catalina.bat 文g?/span> JPDA_TRANSPORT ?/span> JPDA_ADDRESS C个变量,你可以直接查询ƈ修改q两个参数的|注意 JPDA_TRANSPORT 的g定是 dt_socket 才行。不q启动方式有些变化,命o行需要这P catalina.bat jpda start

?/span> Linux 中,可以直接 ./ catalina.sh jpda start 命o直接启动调试模式Q不q默认的端口?/span> 8000 , 你也可以?/span> catalina.sh 查找 JPDA_ADDRESS="8000" 把端口修Ҏ要的倹{至于写配置文g setenv.sh 直接?/span> ./starup.sh 启动的Ş式,我没成功Q呵?span lang="EN-US">

下面q个是 Eclipse 中的 Debug 讄H口了,别告诉我你不会调出来Q呵?span lang="EN-US">

remote.jpg 

q里Q我在本Z?/span> remote 调试E序。当Ӟ自然是有好处的了?/span> eclipse 中调E序的都知道Q在 eclipse 中再启动其他服务Q不一定是 Tomcat 啦)Q会?span lang="EN-US">eclipse~辑的响应速度急剧下降Q甚臛_死,很是不爽Q现在好了,q么一设,既有了速度Q又可以设调试断点,哈哈Q舒服啊?/span>

Vincent Chen 2006-06-14 19:49 发表评论
]]>
完全调配EclipseQJBOSS4.0q行J2EE开发[实战]http://www.tkk7.com/Vencent/articles/39251.htmlVincent ChenVincent ChenTue, 04 Apr 2006 13:07:00 GMThttp://www.tkk7.com/Vencent/articles/39251.htmlhttp://www.tkk7.com/Vencent/comments/39251.htmlhttp://www.tkk7.com/Vencent/articles/39251.html#Feedback0http://www.tkk7.com/Vencent/comments/commentRss/39251.htmlhttp://www.tkk7.com/Vencent/services/trackbacks/39251.html 完全调配EclipseQJBOSS4.0q行J2EE开?o:p>

~写人:Q龙(邱洋Q?br />联系QQQ?964477
电子邮gQ?a href="mailto:qxk2005@gmail.com">qxk2005@gmail.com

 

一、安装所需软g

 

?下蝲q且安装eclipse3.1.2Q推荐用lomboz-wtp-emf-gef-jem-eclipse-SDK-3.1.2-win32.zipq个完整的打包文?o:p>

http://download.zh.forge.objectweb.org/lomboz/lomboz-wtp-emf-gef-jem-eclipse-SDK-3.1.2-win32.zip

 

?下蝲安装JBoss4.0.4RC1

http://jaist.dl.sourceforge.net/sourceforge/jboss/jboss-4.0.4RC1.zip

 

?下蝲安装MyEclipse4.1GA

 

?下蝲JBossIDE-1.5.1.GA-Bundle-win32Qƈ且作为插件安装到eclipse目录

http://jaist.dl.sourceforge.net/sourceforge/jboss/JBossIDE-1.5.1.GA-Bundle-win32.zip

 

二、徏立一个新的J2EE HelloWorld工程Q假定上q程序都完全安装Q?o:p>

 

?依次点击Q菜单→File→New→Project 从列表中选择 EJB→EJB ProjectQ记得是独立的EJB目录Q不是MyEclipse→EJB或者其他)Q然后点击Next按钮

 


 

? 在Project Name中输入HelloWorldQ在Target runtime中选择JBoss v4.0如果没有q个选项Q则点击[New]按钮建立一个,具体Ҏ参看下列囄Q中间可能涉及到让你指定xdoclet目录的情况,请到下列|址下蝲 xdoclet-bin-1.2.3.zip

http://jaist.dl.sourceforge.net/sourceforge/xdoclet/xdoclet-bin-1.2.3.zip


 

 

 

Q↑q个囄中的JRE列表中的j2sdk1.40是在eclipse中设|好的,步骤为:菜单→Window→Preferences→MyEclipse→Application Servers→JBoss4→JDK→AddQ如下图所C↓Q?o:p>



 

?在选择成JBoss v4.0之后点击下一步,然后N所有可以勾选的选项



 

?Source Folder修改为srcQ原来ؓejbModuleQ,然后点击Finish按钮


 

 

?之后生成的目录结构如下图?o:p>


 

 

?菜单→File→New→PackageQ输入一个包?cn.tkey Q包的名字随意)Q然后点击Finish按钮

 


 

↓就是现在的目录l构

 


 

?菜单→File→New→OtherQ然后在树Ş菜单中选择EJB→XDoclet Enterprise JavaBeanQ然后点击Next按钮

 


 

?选中SessionBean q且点击 Next按钮

 


 

?在Class name中输入HelloWorldBeanQ注意:q个名称的后~必须是BeanQ比如xxxBeanQ?Q然后点?Next按钮

 


 

? EJB Name、JNDI Name、Display Name都修改ؓHelloWorldEJBQ默认ؓHelloWorldQ之所以写成HelloWorldEJB是ؓ了清楚这个类是一个EJB调用Q如 果可以记清楚Q可以不用修改)Q其他选项使用默认Q然后点击Finish按钮完成d

 

 

 

?修改生成的HelloWorldBean.java文gQ将 foo Ҏ修改q且保存Q修改ؓQ?o:p>

        public  String foo(String param)  {

            
return   " Hello World and welcome  " + param;

    }

 

? 菜单 ?span lang="EN-US">File→New→OtherQ?/span> 然后在树形菜单中选择 JBoss-IDE→EJB Componets→EJB Test ClientQ?/span> 然后点击 Next 按钮

 

 


? 在Name中填入EJBTestQ在JNDI Name修改为HelloWorldEJBQ这个名字我们可以依ơ进?工程目录%/src/META-INFQ查看jboss.xml文g中的< jndi-name>HelloWorldEJB</jndi-name>q一行,填写<jndi-name>< /jndi-name>中的部分Q这里就是HelloWorldEJBQ,在Remote Interface中输入cn.tkey.HelloWorldEJBQ在Home Interface中输入cn.tkey.HelloWorldEJBHomeQ然后勾选foo(java.lang.String param)选项Q最后点击Finish按钮l束配置?o:p>

 

 

 

? 菜单→Project→PropertiesQ在树Ş菜单中选择Java Build PathQ然后选择[Libraries]选项卡,点击[Add External JARs..]按钮Q之后进?JBOSS_HOME%/client中,选中q个下面的除了jboss-j2ee.jar之外的所有jar文gQ最后点 击ok按钮完成配置

 


 

?菜单→Project→Clean→选中Clean projects selected belowQ然后勾?HelloWorld工程之后点击[ok]按钮完成重新~译

 

? q入到windows的命令行状态,然后q入%工程目录%/build/classesQ输?jar cvf helloworld.jar *Q将生成的helloworld.jar文g拯?JBOSS_HOME%/server/default/deploy目录?o:p>

 


 

?q行Jboss4.0你将在控制台中看C列信息,表明EJB已经被加入到JBoss中去了:

 


 

?回到eclipse中,修改刚生成的EJBTest.java文gQ将Ҏpublic void testFoo() 修改为:

      public void testFoo() throws Exception {

       cn.tkey.HelloWorldEJB instance;
        java.lang.String result;

 

       
// Parameters
 

       java.lang.String param0 
= null;

 

       
// Instance creation
 

       instance 
= this.home.create();

 

       
// Method call
 

       result 
= instance.foo(param0);

      

       System.out.println(instance.foo(param0));

 

       
// Various assertions

       
// assertNotNull(result);
 

    }


 

? 开始测?/span> EJBQ?/span> 用右键选中我们刚才生成?/span> EJBTest.javaQ?/span> 依次选择 Run As→JUnit Test

 


 

?最后当我们看到eclipse右下角出现如下图所C的输出的时候,说明我们的J2EE之旅开始了Q而这个Hello World and welcome null 却是来自于另外一个世界的声音他就是JBoss

 


 

注解Q所有用%xxx%表示的意思是xxx的根目录Q比如我的jboss被安装到了c:\jboss4.0Q那?JBOSS_HOME%׃表c:\jboss4.0Q因为台机器安装的jboss目录以及其他目录都不相同,所以就采用q种方式?o:p>

 

? ?工程目录%表示eclipse工程的安装目录,比如在运行eclipse的时候会提示让你输入一个工作目录,然后你再建立新工E的时候就会全部在q个 目录下面建立新的子目录,比如我的eclipse工作目录为c:\workshopQ我的EJB工程名ؓHelloWorldQ那么我?工程目录%Q就 代表c:\workshop\HelloWorld

 

教程中涉及到的[ok]、[Finish]Q代表ok按钮QFinish按钮的意思,里面?[]"括号没有M意义Q只起到醒目的作?/span>

Vincent Chen 2006-04-04 21:07 发表评论
]]>
我ؓ什么要?Eclipsehttp://www.tkk7.com/Vencent/articles/35983.htmlVincent ChenVincent ChenSat, 18 Mar 2006 13:25:00 GMThttp://www.tkk7.com/Vencent/articles/35983.htmlhttp://www.tkk7.com/Vencent/comments/35983.htmlhttp://www.tkk7.com/Vencent/articles/35983.html#Feedback0http://www.tkk7.com/Vencent/comments/commentRss/35983.htmlhttp://www.tkk7.com/Vencent/services/trackbacks/35983.htmlU别: 初

Gary Pollice, 实践教授, 伍斯特工业学?br />

2005 q? 9 ? 07 ?/p>

本文来自?Rational EdgeQ在 Gary Pollice 本月的专栏中Q他讨论?Eclipse 技术的优点q解释了Z么他和伍斯特工业学院的其他教师在他们的课E中使用 Eclipse?/blockquote>

插图每个软g技术的发展都需要在软g开发工具中q行变化。作为教授未来Y件开发h员的人,我经总教学角度考虑我的学生对完成作业工L需求。倘若U学技术快速地变化Q我可以 —?应该 —?教给学生多少关于具体工具的内容呢Q?/p>

一 斚wQ我知道如果大学教授不在译֠上用好的工P那么学生也许会拿着重要的书本知识离开而仍旧处于实늚不利C。另一斚wQ教授学生用“行业力量? 工具需要许多时间。最好有个水晶球告诉我们哪个工具值得投资。记?80 q代?CASE 工具吗?我们p许多旉学习如何使用Q但现在q有多少仍在使用Q?/p>

q运的是Q近来对我来说生zȝ单多了。Eclipse 对于我的学生是近乎于完美的Y件开发环境。它是行业力量。您不需要知道它的所有内Ҏ能有效地使用它。它像您曾想的那LzR?/p>

如果您不知道 Eclipse 是什么,那么我推荐您ȝ?Eclipse 的网站?a >1? 上的第一句话说出了全部:?Eclipse 是通用的工具^?—? 一个开攄可以ZQ何内容(没有Ҏ的)而扩展的集成开发环境。”它真的是Y件工L瑞士军刀。听h太好都不真实了吧Q我们大部分人都知道当一个工兯 囑ց每g事时Q它会以做好很少的事而告l。但是仅 Eclipse 例外Q?/p>

什么 Eclipse 对学术用那么重要?q里是它的一些优点:

  • 在大部分q_上提供一致的Ҏ集

  • 不仅支持 Java 或Q意单一的语a

  • 开源且免费Q但完全得到支持

  • 真正地可扩展q可配置

  • 行业力量

我们在下面更细致地讨论?/p>

Eclipse 在多重^C提供一致的Ҏ集

? 伍斯特工业学院,我们教授的内容不深入CQ意具体的计算q_。我们的学生通常可以自由地选择他们使用最舒适的q_Q大多数臛_有一台计机Q且许多人有? 多台。整个校园范围内实验室中的机器运行着许多操作pȝ。这是我们想避免留一些需要具体^収ͼ?Microsoft] WindowsQ的作业的原因?/p>

? 我在软g工程课上布置大型的团队工E时Q我惌学生自由地全诏注于问题Q而不是具体的q_。Eclipse 支持该目标,因ؓ它可在所有我们用的q_上运行:Windows、Linux ?MacOS X。更重要的是Q它在每个^C以同L方式q行Q所以即使我不是学生所选^台方面的专家Q我也可以与学生一起工作?/p>

事实上,不论您用什么^収ͼEclipse 像q_建立的应用程序一栗当您下?Eclipse Ӟ您下载对应您具体q_?EclipseQ对每个q_它都有单独的囑Ş工具包。这提供了接q本土的外观Q以及更好的性能?/p>

回页?/b>


Eclipse 支持过 Java 的语a

? 您发?Eclipse 不仅?Java 开发^台时Q您看?Eclipse 的真正好处。Eclipse 的基本原理具体化到技术的体系l构中:提供一个给与开发h员一个一致的方式来扩展系l功能的核心。每个扩展,或插件ؓ Eclipse 配置提供具体的功能ƈ且提供其他插件能够用的扩展?/i>?a >2

插g体系l构?Eclipse 有可能支持许多语a和范型。插件的实例是:

  • Eclipse C 开发工PC Development ToolQCDTQ工E(http://www.eclipse.org/cdt/Q。此核心工程Q由 Eclipse Foundation 所支持Q?a >3 提供了高质量?C ?C++ 支持。可交付的工E包括对~辑、调试、makefile 生成器、语法分析、搜索和内容辅助的支持?br />
  • 同样?Eclipse Foundation 发v的,COBOL 插gQ?a target="_blank">http://www.eclipse.org/cobol/Q提供类g CDT 的功能?

  • EPICQ?a target="_blank">http://e-p-i-c.sourceforge.net/Q向 Eclipse 提供 Perl 开发环境?br />
  • PydevQ?a target="_blank">http://sourceforge.net/projects/pydev/Q是其中一个支?Python 语言的插件?/li>

最q当我察看最喜爱?Eclipse 插g目录Q?a target="_blank">http://www.eclipse-plugins.info/eclipse/index.jspQ? Ӟ我看到在语言分类中目前有五十一个插件。无论您使用什么语aQ碰巧的是会有一?Eclipse 插g使您?Eclipse 中用该语a开发程序,Haskell、ML、Prolog ?GOO 都得到支持。不仔细分析?1 中显C的 Eclipse 实例Q您可能不能说出我是否在使用 Java 、C++、Ruby 或Q意一个其他被支持的语a?/p>

q种外观上的一致性给作ؓ老师的我带来? 重大的好?—?q且也可以ؓ作ؓ实践工程师或理人员的您带来好处。一旦您了解如何通过不同?Eclipse 视图q行定位Q您可以轻易地从一U语a或^台迁Ud另一Uƈ且知道工作v来是一L。我贺 Eclipse 的开发团队,他们建立了一l标准,其他开发h员可?—?且确?—? 要依照该标准来实际上创徏Lcd的插件。数量较的没有依照标准指导斚w的插仉常是质量不合格的?/p>

教我的学生如何?Eclipse 通常需要一C节课。这对于他们所获得的收益来说不是很大的代h —?且我从收C致格式的作业中得到好处。当我能够不ZQ何问题地加蝲q运行他们的工程Ӟ评分更单了?/p> ?1Q典型的 Eclipse 视图

?1Q典型的 Eclipse 视图



回页?/b>


Eclipse 是开源且免费的,但得到全面支?/span>

开 源的出现已经证明免费的Y件不一定必然是低质量的软g。然而,企业Q如 RedHatQ也认识刎ͼ向用该软g的h提供支持是重要的。事实上QEclipse 拥有一个非常活跃的专区愿意帮助解决M问题。另外,׃ Eclipse 是许多商业Y件品的基础Q包?IBM Rational 工具Q许多厂商提供额外的支持?/p>

如一个电视广告中说的Q“免 费”是很高的h钱,q且q对学术界尤其正。IBM、Microsoft 和其他公司拥有极好的计划Q帮助教育工作者和学生以非怽的h格或免费获得软g。没有他们的帮助Q大学教育的费用会比目前更高。Eclipse q_和它的许多免Ҏ件学生很容易地下蝲他们所需要的东西。另外,通过试新的语言和工P大量的免Ҏ件提供学生一U低风险的方式来扩展视野。这Ҏ 来说也非常好Q因为我在不断地L很棒的新事物来展C给学生。我不愿意ؓ一个课E指定一?100 元的书c,当我让学生代替用不增加M评成本的免费的软g下蝲Ӟ我的良心上好q些?/p>

我的两个学生刚完成他们的专业资格考试工程 Qmajor qualifying projectQMQPQ,WPI 的毕业要求。他们的工程是ؓ Eclipse 建立一个对象^収ͼ可以使您与您创徏的类对象交互Q且不必书写完整的程序。他们做Z惊h的工作,但没?Eclipse 专区的支持,他们决不可能实现他们所做的。只要他们遇到困难,他们向适当的新ȝ发送消息ƈ接收到提C回{。这帮助他们不仅完成了工作,而且q成Z? 的职业开发h员的一部分Q在q入他们的职业生涯之前,那种支持是无h的?a >4



回页?/b>


Eclipse 是真正地可扩展及可配|的

? q些q间Q我用过许多L可扩展且可配|的工具。然而,当我C它们之后Q我发现配置不像听v来那L单。我的第一ơ经历是?1974 q_我需要适应一个数据点计算机,而销售员告诉我可以用他们的新pȝ做到。我订了一个带有巨大的 5MB 盘的系lƈ{待。当它出现时Q我问他Q“好了,我现在如何做工作Q”回{是Q“您可以做,但我们没有对应它的Y件。您需要自q写。”在得克萨斯州的? 安东奥׃两周的时间以后,了解操作pȝ和汇~语aQ我能够按自己想要的扩展软g。但我得Cl验 —?“可扩展的”是在旁观者的g的?/p>

然而,Eclipse ?/i>? 正可扩展的。用ؓ该目的而设计良好的软g是多么高兴的事。现在,我正在写一个插Ӟ它将比我?1974 q时的简单汇~语aE序需要花Ҏ多的旉Q而我可以做如此复杂的事情。另外,׃ Eclipse C֌可以提供帮助Q我期望工作可以更o人愉快且最l品不Ҏ有缺陗?/p>

Eclipse 插g面Q参见前面的脚注Q列Z 825 个提供品,它是q_可扩展性的证据。对于大部分?Eclipse 软gQ安装插件是一件简单的事。装有最新的 Eclipse 版本后,您就可以单地?Eclipse 中指向特定的 Web 站点q单L钮。图 2 昄了加?AspectJ 开发工h件的向导。如果您惌的插件不支持更新站点Q您可以单地下蝲q将插g解包到适当的目录下 —?q也?Eclipse 交付使用的方式。要安装 EclipseQ您只要其拆包。只要您的系l中有了一?Java JREQ您可以准备行动了?/p>

不是所有的 Eclipse 插g都免贏V许多商业工具也?Eclipse 的插件或?Eclipse l定。例如,最新版本的 IBM Rational 工具处于 Eclipse 之上Q包括ؓ Eclipse 提供许多扩展?IBM Websphere。一旦您安装了这些工P您可以在它们之上建立扩展以及其他 Eclipse 插g。此U灵zL应该给采用q些Z Eclipse 的工L企业带来很多好处?/p> ?2Q安?AspectJ 开发工h件的向导

?2Q安?AspectJ 开发工h件的向导

Eclipse 也是高度可配|的。其体系l构允许每个插g提供h功能的可配置选项。甚臛_使用 Eclipse 许多q之后,我确定我仍旧没有发现所有可能的配置功能 —?但我已经扑ֈ_让我觉得该环境很舒适的配置功能了?/p>

? q?Preferences H口配置 EclipseQ如?3 所C。如您所见到的,我在改变一?Java ~译讄。您可以以不同的方式解释许多cd?Java q规Qƈ?Preferences H口中的 Compiler H格让您军_q些是否为错误、警告或可接受的。最新的 Java ~辑器,一个叠合的~辑器,让您选择是否关闭代码或甚臛_察看您现在正处理的方法?/p>

我已l发现徏立编码式样非常简单,?Eclipse 参数选择q行讑֮Qƈ与其他h分n该式栗利用简单的按键序l合 —??Windows 中的 SHIFT-CTL-F —?代码会自动地Ҏ您的首选式h式化?/p> ?3QEclipse Preferences H口

?3QEclipse Preferences H口

Eclipse 可配|性是 Emacs 可配|性的再现。如果您是一?Emacs 用户Q您很可能添加自q宏指令和化操作来为您的式栯行定制。Eclipse l承了该传统?/p>

回页?/b>


Eclipse 是行业力?/span>

IBM5最 初将 Eclipse 作ؓU有的^台进行开发,但在 2004 q它帮助l成了非盈利?Eclipse Foundation 以俯瞰技术的更远发展。现在,基金会理事会批准新的子项目ƈ且基金会吸收了商业组l、学术和研究机构、标准团体等{,以确?Eclipse 处于软g工具行业的最前沿。这意味着您可以依?Eclipse 作ؓ可预见的未来中用的可行的行业力量工兗?/p>

当我花时间向我的学生介绍 Eclipse Ӟ我知道时间花得很值得。Eclipse 是他们可以带到工作中的东西,因ؓ如此多的企业在用它。如果他们的企业q没有用,那么它是他们可以引入的东ѝ尤其是它拥有他们生产高质量软g所需? 的特性。我常常向我的学生讲qCh、过E和工具的道理,q且 Eclipse 实说明了好工具的益处?/p>

在我的Y件工E课上,学生在最程度上也要接触Q?/p>

  • 基本?Eclipse Java 开发环境?br />
  • JUnit 单元试插g?br />
  • 用于版本控制?CVS ?Subversion 插g?/li>

一旦他们掌握了q三U技术,他们有了一个好的基软g开发工具包Qƈ且很Ҏ通过其他的插件添加新增的功能?/p>

回页?/b>


ȝ

? 是所有的学生都?Eclipse。一些h仍旧使用文本~辑器,?Textpad]Q和命o行程序运行。然而,我的那些接触 Eclipse 的学生中的大多数都带着对好的开发工L功能的更好的理解d了,q且增加了他们能够在更大型Y件开发项目中有效工作的信心?/p>

q里是两个不同的学生做出的关于在我最q的软g工程目中?Eclipse 的经历的评述Q?/p>

学生 1Q? 我曾l认为像 Eclipse q样的工具ؓ你做了太多的事ƈ使你成ؓ懒惰的程序员。在?Eclipse q样惊h的工具带C琐碎的编码工作时我们完成了多么多的工作,当我看到q时Q很隄ZQ何专业h员如何避免用像 Eclipse q样的工兗一致的格式、直观的调试、内嵌的 CVS ?JUnit 支持、类和包的一览和层次Q以及用于它们所有的囑Ş用户界面Q Eclipse 成ؓ非常友好的助手?/blockquote>
学生 2Q学习用像 Eclipse q样的高U图形用L面来开发Y件也是极好的Q由于它L了许多重复琐的工作Q我有更多的时间考虑实际的代码和重要的算法?/blockquote>

当然Q在学生使用M产品Ӟ他们都会遇到问题。一些h发现了当使用可视化编辑器时 Eclipse 崩溃的方法。一些h发现 Eclipse 很慢q带有他们不需要的Ҏ而显得“臃肎?a >6 —?但许多h一旦实际调试其他h的代码时改变了观点。他们的大多数经历是U极且非常真实的?/p>

恰好那些没有l束热爱 Eclipse 的学生接触到了真实的软gQƈ且他们了解了我希望他们在毕业时达到的质量U别。他们见到如何设计ƈ实现健壮的品,q且他们发现工具是多么有价倹{如果您没有试过 EclipseQ我推荐您试一试。您会很高兴使用的?/p>

回页?/b>


更多的读?/span>

下面是一些我觉得有帮助的 Eclipse 资源?/p>

  • Eclipse |站Q?a target="_blank">http://www.eclipse.orgQ有关于产品每个部分的文章。它们是入门和寻找详l技术信息的好去处?br />
  • Eclipse ECESIS 工程面Q在 http://www.eclipse.org/ecesis/Q提供一个很的Q关于如何?Eclipse 和书写插件的录像教程?br />
  • 如果您对 Eclipse 很陌生,我推?Addison-Wesley 出版的,?D'Anjou {h所著的 The Java Developer's Guide to Eclipse, 2e。这是一本提供关于大部分主题的有用信息的大而完全的书籍?br />
  • 如果您要建立自己的插Ӟ您或许应该看?Beck ?Gamma 所写的 Contributing to EclipseQ以?Clayberg ?Rubel 所写的 Building Commercial-Quality Plug-Ins。两本书都是?Addison-Wesley 出版的?/li>


回页?/b>


注释

1?http://www.eclipse.org 开始?/p>

2要了解更多关于插件体pȝ构的内容Q请参见 http://www.eclipse.org/articles/Article-Plug-in-architecture/plugin_architecture.html?/p>

3Eclipse Foundation 是非营利的企业,目标是促q?Eclipse q_Q?a target="_blank">http://www.eclipse.org/org/index.html?

4Eclipse 对象工作台的主页?http://sourceforge.net/projects/ebob/?

5参见 http://www.eweek.com/article2/0,1759,1750358,00.asp

6我们发现仍在开发中?Eclipse 3.1 ?Eclipse 3.0 慢得多。由于我们不需要新版本支持的所有特性,所以班里的大多C?Eclipse?/p>

回页?/b>


参考资?

  • 您可以参阅本文在 developerWorks 全球站点上的 英文原文?br />


回页?/b>


关于作?/span>

作者照? src=

Gary Pollice 是马塞诸塞州伍斯特市Q伍斯特工业学院的教授实늚教授。他教授软g工程、设计、测试和其他计算机科学课E,q指导学生项目。在q入学术界之前,他花了超 q?35 q的旉开发各U类型的软gQ从业务应用E序到编译程序和工具。他的最后一份业内工作是?IBM Rational Software 提供的,在那里他被称为“RUP 怪h”,他还是原 Rational Suite 队伍中的成员。他?2004 q?Addison-Wesley 发表的文?Software Development for Small Teams: A RUP-Centric Approach, 的主要作者。他拥有数学的学士学位和计算机科学的士学位?/p>



Vincent Chen 2006-03-18 21:25 发表评论
]]>使用 Eclipse q_q行调试http://www.tkk7.com/Vencent/articles/32764.htmlVincent ChenVincent ChenMon, 27 Feb 2006 15:40:00 GMThttp://www.tkk7.com/Vencent/articles/32764.htmlhttp://www.tkk7.com/Vencent/comments/32764.htmlhttp://www.tkk7.com/Vencent/articles/32764.html#Feedback0http://www.tkk7.com/Vencent/comments/commentRss/32764.htmlhttp://www.tkk7.com/Vencent/services/trackbacks/32764.html本文概述了怎样使用 Eclipse q_的内|调试功能来调试您的软g目?
调试是程序员无法回避的工作。调试方法有许多U,但归根结底,是扑ֈ引发错误的代码。D例来_?Linux 应用E序中,分段故障被认为是最常见的错误之一。当E序试讉K未分配给它的内存q因为分D违例而终止时Q将产生q种错误。要修正q种错误Q您需要找到引 发该行ؓ的那行代码。一旦找到有问题的代码行Q这对于知道引发错误的上下文及其相关的倹{变量和Ҏ也是有所帮助的。用调试器查找q些信息变得相当 单?

Eclipse 调试器及 Debug 视图
Eclipse q_的特色在于内|了 Java 调试器,该调试器提供所有标准调试功能,包括q行单步执行、设|断点和倹{检查变量和g及暂挂和恢复U程的能力。此外,您还可以调试在远E机器上q行? 应用E序。Eclipse q_主要是一?Java 开发环境,但其体系l构同时也向其它~程语言开放。如以下您将看到的,同一?Eclipse ?Debug 视图也可用于 C ?C++ ~程语言?

Eclipse q_工作収ͼEclipse Platform WorkbenchQ及其工hZ Java 开发工PJDTQ组件所构徏的。这些组件向 Eclipse 提供以下功能Q?

目理工具
透视囑֒视图
构徏器、编辑器、搜索和构徏功能
调试?
Eclipse 调试器本w是作ؓ Eclipse 二进制文件中包含的标准插件而存在的。Eclipse q有一个特别的 Debug 视图Q允许您在工作台中管理程序的调试和运行。它试中的每个目标显C其暂挂U程的堆栈。程序中的各个线E以作ؓ树的节点出现Q?Debug 视图则显C行中的各目标的进E。如果暂挂一个线E,则其堆栈帧显CZؓ子元素?

在您开始?Eclipse 调试器之前,假定您已l安装了适当?Java SDK/JREQ我推荐您?Java VM 1.4Q和 Eclipse q_ SDK 2.0/2.1Q且两者都工作正常。一般来_先?Eclipse h来测试一下调试选项是一个好L。如果您要开发和调试 C/C++ 目Q您q需要得到ƈ安装 C/C++ 开发工PC/C++ Development ToolQCDTQ。有?Java SDK/JRE、Eclipse q_和样本以?CDT 的链接,请参阅本文后面的参考资料。图 1 昄?Debug 用户界面的常规视图?
?1. Eclipse Debug 视图用户界面的常规视?



调试 Java
在您能调试您的项目之前,需要先完整地编译和q行代码。您首先需要ؓ您的应用E序创徏q行配置q确认其正常启动。之后,您需要?Run > Debug... 菜单Q以同样的方式设|调试配|。您q需要选择作ؓ?Java cȝp试器使用的类Q也请参阅图 2Q。对一个项目,您希望有几种调试配置可以有几种。当调试器启动后Q通过 Run > Debug...Q,会在一个新H口打开它,您可以准备开始调试?

?2. 在调试配|中讄目的主 Java c?

以下是最常见?Eclipse 调试操作的示例指CZ息:

讄断点
当您启动应用E序以进行调试时QEclipse 自动切换?Debug 透视图。无庸置疑,最常见的调试过E就是设|断点,以允许检查在条g语句和@环中的变量和倹{要?Java 透视囄 Package Explorer 视图中设|断点,双击所选的源代码文Ӟ在编辑器中打开它。遍历全部代码,光标放|在含有可疑代码的那一行的标记栏上Q在~辑器区域的左侧Q。双M? |断点(也请参阅?3Q?

?3. 在编辑器左侧边缘可看C个断Ҏ?

现在通过 Run > Debug... 菜单启动调试会话。有一点很重要Q不要把数条语句攑֜同一行,因ؓ您不能在同一行的多条语句上单步蟩q或讄行断点(也请参阅?4Q?

?4. 视图通过左侧边缘的箭头指出当前正在执行的?


条g断点
一旦您扑ֈ出错的地方,您会惌了解在崩溃前E序在干些什么。完成该工作的一U方法是单步执行E序中的每条语句Q一ơ一句,直到到达出问题的? 斏V有时候更好的Ҏ是仅q行某段代码q在出问题的地方l止其执行,q样可以检查该位置上的数据。要实现q一点,可能要声明每当表辑ּ的值更Ҏp? 发的条g断点Q请参阅?5Q。此外,在输入条件表辑ּ时还可以使用代码辅助?

?5. 讄条g断点触发?


对表辑ּ求?
要在 Debug 透视囄~辑器中求表辑ּ的|选中讄有断点的一整行Qƈ在上下文菜单中选择 Inspect 选项Q请参阅?6Q。表辑ּ是在当前堆栈帧的上下文中求值的Q其l果昄?Display H口?Expressions 视图中?

?6. ?Inspect 选项求表辑ּ的?


查看变量
Variables 视图Q在 Display H口中)昄了选中的堆栈中的变量|请参阅图 7Q。要查看所h的变量,只需展开 Variables 视图中的树直到您看到所h的元素ؓ止。您也可以在 Debug 视图中单步执行代码的同时Q在 Variables 视图中查看变量?

?7. ?Display H口中查看变?


当调试器在断点上停止Ӟ您可以通过?Run > Debug... 菜单上选择 Step Over 选项来l调试器会话Q请参阅? 8Q。这单步蟩q突出显C的代码行ƈ执行同一个方法中的下一行(或者它在调用当前方法的Ҏ中l)。作为最后一步的l果而发生更改的变量用颜色突出显 C(~省值是U色Q,所用颜色可在“Changed Variable Value Color”首选项Q由 Debug Variable Views 指定Q中指定?

?8. Run... 菜单中的调试器命?

要在 Debug 视图中暂挂线E的执行Q选择一个运行中的线Eƈ单击 Debug 视图工具栏中?Suspend 按钮。会昄该线E的当前调用堆栈Qƈ且在 Debug 透视囄~辑器中H出昄当前执行的行?

暂挂U程Ӟ光标放|到 Java ~辑器中的变量上Q该变量的值显C在一个小悬QH口中。同P该线E的剙堆栈帧被自动选中Q该堆栈帧中的可视变量显C在 Variables 视图中。可以通过?Variables 视图中单d量名来检查相应的变量?

热交换错误修正:实时代码修正
如果您运行的?JVM 1.4QJava 虚拟机,Java Virtual MachineQ,Eclipse 2.0.2 ?2.1 提供一个叫做热交换错误修正QHotswap Bug FixingQ的新功能(无法用于 JVM 1.3 或更低版?Q?也请参阅? 9Q。它允许在调试器会话q程中更Ҏ代码Q这要比“退出应用程序,更改源代码,重新~译Q再启动另一个调试会话”的一pd步骤好多了。要使用该功能,? 需在编辑器中更改代码ƈ恢复调试。由?JVM 1.4 ?Java q_调试器体pȝ构(Java Platform Debugger ArchitectureQJPDAQ兼容,所以能使用该功能。JPDA 实现了在q行中的应用E序中用l过修改的代码进行替换的能力。当Ӟ当启动您的应用程序或扑ֈ出错炚w要花费很长时间的时候,该功能极其有用?

?9. 热交换错误修正功能不能在 JVM 1.3 及更低版本中使用


如果您完成调试时E序q没有被完整地执行过Q请?Debug 视图中的上下文菜单中选择 Terminate 选项。一个常见的错误是您在调试器会话中用了 Debug ?Run 而不?Resume。这样将会启动另一个调试器会话Q而不是l当前的会话?

q程调试
Eclipse 调试器提供了一个有的选项Q可用于调试q程应用E序。它可以q接C个运?Java 应用E序的远E?VM 上,q将其连接到内部调试器上。处理远E调试会话非常类g本地调试。不q,q程调试配置要求?Run > Debug... H口q行不同的设|。您首先要选择左侧视图中的 Remote Java Application ,单击 New 按钮。这样就创徏了一个新的远E启动配|,q显CZ个选项卡:Connect、Source ?Common?

?Connect 选项卡的 Project 域中Q选择用作启动首选项的项目(用于查找源代码)。在 Connect 选项卡的 Host 域中Q输入运?Java E序的远E主机的 IP 地址或域名。在 Connect 选项卡的 Port 域中Q输入远E?VM 接受q接的端口。一般来_该端口是在远E?VM 启动时指定的。当您想让调试器定 Terminate 命o在远E会话中是否可用Q可以选择 Allow termination of remote VM 选项。如果您希望能终止所q接?VMQ则选择该选项。现在当您选择 Debug 选项Ӟ调试器将试按指定的地址和端口连接远E?VMQƈ?Debug 视图中显C结果?

如果启动器无法连接至指定位置上的 VMQ将昄错误消息。一般来_q程调试功能的可用性完全取决于q程L上运行的 Java VMQ虚拟机QVirtual MachineQ。图 10 昄了远E调试会话的q接属性的讄?

?10. 讄q程调试会话的连接属?


调试其它语言
Java ?Eclipse q_的主语言。然而,Eclipse q_同时也是一个可支持许多其它语言的可扩展q_Q而其中最重要的就是支?C/C++Q因为其行性)。Eclipse 通过?C/C++ 开发工PCDTQ支?C/C++。请参阅参考资料以获取相关链接。CDT 通过调试 C/C++ 代码的功能扩展了标准?Eclipse Debug 视图Q同?CDT Debug 视图允许您在工作C理 C/C++ 目的调试。CDT 不包含其内部调试器,但它向必d在本C用的 GNU GDB 调试器提供了一个前端?

下蝲q安装了 CDT 之后Q只需切换?Debug 视图Q您可以开始调试当前的 C/C++ 目了(请参阅参考资料,以获取一介l如何安?CDT 的文章的链接Q。这h可以讄Qƈ在执行过E中M时候更改)代码中的断点Qƈ且跟t变量和寄存器。Eclipse 调试器显C您调试中各个目标的暂挂U程的堆栈。程序中的各个线E作为树的节点出现。它昄了运行中各目标的q程。请C?GNU GDB 调试一个带有调试符号链接的E序Ӟ它最有效。这是在~译q程中由命o行参?-g 来实现的。需要更多的信息请?-ggdb 开养I该参数包含有特定?GNU GDB 的调试符受?

如果您要调试 servletQ?Sysdeo Eclipse Tomcat Launcher。该插g使您能够理 Tomcat 4.x/3.3 servlet 容器Q通过创徏和导入一?Tomcat WAR 目Q。它同时在一个内?Java Eclipse 调试器中注册一?Tomcat q程Q这hp方便地调?Tomcat 应用E序了。还有其它几?Eclipse 插gQ我们能够? servlet 使用内部 Eclipse 调试器,比如 Cactus ?Eclipse 插gQResin 插g?X-Parrots ServletExec 插g。在下面的参考资料中可获得这些插件的链接?

l束?
Eclipse q_提供了内|的 Java 调试器,该调试器h标准调试功能Q包括进行单步执行、设|断点和倹{检查变量和g及暂挂和恢复U程的能力。它q可以用于调试在q程机器上运行的应用E? 序。Eclipse q_主要是一?Java 开发环境,但是同一?Eclipse ?Debug 视图也可用于 C ?C++ ~程语言?/span>

Vincent Chen 2006-02-27 23:40 发表评论
]]>
GEFhttp://www.tkk7.com/Vencent/articles/31836.htmlVincent ChenVincent ChenTue, 21 Feb 2006 10:15:00 GMThttp://www.tkk7.com/Vencent/articles/31836.htmlhttp://www.tkk7.com/Vencent/comments/31836.htmlhttp://www.tkk7.com/Vencent/articles/31836.html#Feedback0http://www.tkk7.com/Vencent/comments/commentRss/31836.htmlhttp://www.tkk7.com/Vencent/services/trackbacks/31836.htmlGEF.PNG



Vincent Chen 2006-02-21 18:15 发表评论
]]>
开?Eclipse 插ghttp://www.tkk7.com/Vencent/articles/30877.htmlVincent ChenVincent ChenWed, 15 Feb 2006 14:38:00 GMThttp://www.tkk7.com/Vencent/articles/30877.htmlhttp://www.tkk7.com/Vencent/comments/30877.htmlhttp://www.tkk7.com/Vencent/articles/30877.html#Feedback0http://www.tkk7.com/Vencent/comments/commentRss/30877.htmlhttp://www.tkk7.com/Vencent/services/trackbacks/30877.html

如何创徏、调试和安装插g



U别: 初

David Gallardo, 软gN

2003 q?3 ?26 ?/p>

在本文中QDavid Gallardo 向您展示了如何?Plug-in Development Environment 的代码生成向导来创徏 Eclipse 插g。您学到如何在q行时工作台中运行和调试插gQƈ且在 Eclipse 中安装完成的插g。David q研I了与打包插件相关的问题 ?包括l护版本信息、以插g片段的Ş式更新功能,以及l合插g来创建完整的功能部g?/blockquote>

Z插g的体pȝ?/font>

Eclipse q_?IBM 向开发源码社区捐赠的开发框Ӟ它之所以出名ƈ不是因ؓ IBM 宣称投入开发的资金L ?4 千万元 ?而是因ؓ如此巨大的投入所带来的成果:一个成熟的、精心设计的以及可扩展的体系l构。Eclipse 的h值是它ؓ创徏可扩展的集成开发环境提供了一个开放源码^台。这个^台允怓Q何h构徏与环境和其它工具无缝集成的工兗?/p>

工具?Eclipse 无缝集成的关键是 插g。除了小型的q行时内怹外,Eclipse 中的所有东襉K是插件。从q个角度来讲Q所有功能部仉是以同等的方式创建的。从q个角度来讲Q所有功能部仉是以同等的方式创建的?

但是Q某些插件比其它插g更重要些。Workbench ?Workspace ?Eclipse q_的两个必备的插g ?它们提供了大多数插g使用的扩展点Q如?1 所C。插仉要扩展点才可以插入,q样它才能运行?/p>
?1. Eclipse Workbench ?WorkspaceQ必备的插g支持
Eclipse Workbench

Workbench lg包含了一些扩展点Q例如,允许您的插g扩展 Eclipse 用户界面Qɘq些用户界面带有菜单选择和工h按钮Q请求不同类型事件的通知Q以及创建新视图。Workspace lg包含了可以让您与资源Q包括项目和文gQ交互的扩展炏V?/p>

当然Q其它插件可以扩展的 Eclipse lgq只有 Workbench ?Workspace。此外,q有一?Debug lg可以让您的插件启动程序、与正在q行的程序交互,以及处理错误 ?q是构徏调试器所必需的。虽?Debug lg对于某些cd的应用程序是必需的,但大多数应用E序q不需要它?/p>

q有一?Team lg允许 Eclipse 资源与版本控制系l(VCSQ交互,但除非您正在构徏 VCS ?Eclipse 客户机,否则 Team lgQ就?Debug lg一P不会扩展或增强它的功能?/p>

最后,q有一?Help lg可以让您提供应用E序的联机文档和与上下文敏感的帮助。没有h会否认帮助文档是专业应用E序必备的部分,但它q不是插件功能的必要部分?/p>

上述每个lg提供的扩展点都记录在 Eclipse Platform Help 中,该帮助在 Platform Plug-in Developer 指南的参考部分中。乍一看,其?API 参考大全的 Workbench 部分Q一开始会令h望而却步。我们不会深入了解众多可用扩展点的详l信息,而只是粗略地看一个简单插件及其组件?/p>

回页?/font>


插g?/font>

创徏插g最单的Ҏ是?Plug-in Development EnvironmentQPDEQ。PDE ?Java Development ToolingQJDTQIDE ?Eclipse 的标准扩展。PDE 提供了一些向g帮助创徏插gQ包括我们将在这里研I的“Hello, world”示例?/p>

?Eclipse 菜单Q选择 File=>New=>OtherQ或?Ctrl-NQ,然后选择 Select 对话框左边的 Plug-in Development 向导。在 Select 对话框的双Q选择 Plug-in Project。按 Next。在下一屏上Q输入项目名Uͼ我用了 com.example.hello 。再ơ按 Next。在下一屏上Q请注意Q插件标识就与项目名U相同。用项目名UC为插件标识可以将该插件与另一个插件的名称发生冲突的机会减到最。再按一? Next。下一屏让您选择是手工创建初始插件代码,q是q行代码生成向导。保留代码生成向导的~省选项Q选择“Hello, World”,然后? NextQ如?2 所C?


?2. 选择“Hello, World”代码生成向?
新插? src=

下一屏要求一些附加信息。请注意q一屏上的信息:它包含了插g名称、版本号、提供者名U和cd。这些是关于插g的重要信息,我们在E后研究。可? 接受向导提供的缺省倹{按 Next。在下一屏幕上,接受包名、类名和消息文本的缺省倹{选择“Add the action set to the resource perspective”复选框。按 Finish?/p>

如果接到通知Q向导需要启用某些其它插件才能完成,那么?OK?/p>

q一会儿Q向导将完成Q而在您的工作Z会有一个新的项目,名ؓ com.example.hello Q如?3 所C?


?3. PDE 透视图:Welcome to Hello Plug-in
PDE 透视? src=

?Package Explorer 中,工作台的左边是向导创建的一些东西的概述。大多数w不引人关注:包括目c\径中的许?.jar 文gQ这些包括插件和 Java q行时所需?Eclipse c)、一个图标文件夹Q包含了工具栏按钮的囑ŞQ,以及 build.properties 文gQ包含自动构本所使用的变量)?

q里最有意思的东西?src 文g夹,它包含了插g?plugin.xml 文g的源代码 ?plug-in.xml 是插件的清单文g。我们将先查?plugin.xml?/p>

回页?/font>


插g清单文g

插g清单文g plugin.xml 包含?Eclipse 插仉成到框架所使用的描qC息。缺省情况下Q当W一ơ创建插件时Q会在清单编辑器区域中打开 plugin.xml。编辑器底部的选项卡让您可以选择关于插g的不同信息集合。Welcome 选项卡显CZ消息“Welcome to Hello Plug-In”,q且要讨Z所使用的模板和关于使用 Eclipse 实现插g的提C。选择“Source”选项卡可以让您查? plugin.xml 文g的完整源代码?/p>

让我们看看插件清单文件的各个部分。首先是关于插g的常规信息,包括它的名称、版本号、实现它的类文g的名U和 .jar 文g名?


清单 1. 插g清单文g ?常规信息

<?xmlversion="1.0" encoding="UTF-8"?>
<plugin
id="com.example.hello"
name="Hello Plug-in"
version="1.0.0"
provider-name="EXAMPLE"
class="com.example.hello.HelloPlugin">

<runtime>
<library name="hello.jar"/>
</runtime>

接着Q列Z我们的插件所需的插Ӟ


清单 2. 插g清单文g ?必需的插?/b>

<requires>
<import plugin="org.eclipse.core.resources"/>
<import plugin="org.eclipse.ui"/>
</requires>

列出的第一个插?org.eclipse.core.resources 是工作区插gQ但实际上我们的插gq不需要它。第二个插g org.eclipse.ui 是工作台。我们需要工作台插gQ因为我们将扩展它的两个扩展点,正如后面?extension 标记所指出的?

W一?extension 标记拥有点属?org.eclipse.ui.actionSets 。操作集合是插gd到工作台用户界面的一l?基?/i>?卻I菜单、菜单项和工h。操作集合分l了基|q样用户可以更方便地理它们。例如,我们?Hello 插g的菜单和工具栏项出现在 Resource 透视图中Q因为当在运行代码生成向导时Q我们做了这L选择。如果用戯更改它,可以使用 Window=>Customize Perspective菜单选项从要?Resource 透视图中昄的项中除厠ZSample Action Set”?


?4. 定制 Resource 透视?
Resource 透视? src=

操作集合包含了两个标讎ͼ menu 标记Q描q菜单项应该出现在工作台菜单的什么位|,以及如何出现Q和 action 标记Q描q它应该做什么)?其?action 标记标识了执行操作的cR注Q这个类不是上面列出的插件类?


清单 3. 操作集合

<extension
point="org.eclipse.ui.actionSets">
<actionSet
label="Sample Action Set"
visible="true"
id="com.example.hello.actionSet">
<menu
label="Sample &Menu"
id="sampleMenu">
<separator
name="sampleGroup">
</separator>
</menu>
<action
label="&Sample Action"
icon="icons/sample.gif"
class="com.example.hello.actions.SampleAction"
tooltip="Hello, Eclipse world"
menubarPath="sampleMenu/sampleGroup"
toolbarPath="sampleGroup"
id="com.example.hello.actions.SampleAction">
</action>
</actionSet>
</extension>

许多菜单和操作属性的目的相当明显 ?例如Q提供工hC文本和标识工具栏项的图形。但q要注意 action 标记中的 menubarPath Q这个属性标识了 menu 标记中定义的哪个菜单调?action 标记中定义的操作。有兌个和其它工作台扩展点的详l信息,请参?Platform Plug-in Developer GuideQ尤其是“Plugging into the workbench”章节(可以?Eclipse 的帮助菜单中获取该指南)?

׃我们选择了将插gd?Resource 透视图,于是生成了第二个 extension 标记。这个标CD?Eclipse W一ơ启动ƈ装入我们的插件时Q将插gd?Resource 透视图?/p>
清单 4. extension 标记

<extension
point="org.eclipse.ui.perspectiveExtensions">
<perspectiveExtension
targetID="org.eclipse.ui.resourcePerspective">
<actionSet
id="com.example.hello.actionSet">
</actionSet>
</perspectiveExtension>
</extension>
</plugin>

如果忽略q最后一?extensionQ用户就需要?Window=>Customize Perspective插件添加到 ResourceQ或其它Q透视图?



回页?/font>


插g源代?/font>

代码生成向导生成了两?Java 源文Ӟ打开 PDE Package Explorer 中的 src 文g夹就可以看到它们。第一个文?HelloPlugin.java 是插件类Q它l承?AbstractUIPlugin 抽象cR?HelloPlugin 负责理插g的生命周期,在更为扩展的应用E序中,它负责维护诸如对话框讄和用户首选项{内宏V?HelloPlugin 要做的事p么多Q?


清单 5. HelloPlugin

packagecom.example.hello.actions;

import org.eclipse.ui.plugin.*;
import org.eclipse.core.runtime.*;
import org.eclipse.core.resources.*;
import java.util.*;

/**
* The main plugin class to be used in the desktop.
*/
public class HelloPlugin extends AbstractUIPlugin {
//The shared instance.
private static HelloPlugin plugin;
//Resource bundle.
private ResourceBundle resourceBundle;

/**
* The constructor.
*/
public HelloPlugin(IPluginDescriptor descriptor) {
super(descriptor);
plugin = this;
try {
resourceBundle= ResourceBundle.getBundle(
"com.example.hello.HelloPluginResources");
} catch (MissingResourceException x) {
resourceBundle = null;
}
}

/**
* Returns the shared instance.
*/
public static HelloPlugin getDefault() {
return plugin;
}

/**
* Returns the workspace instance.
*/
public static IWorkspace getWorkspace() {
return ResourcesPlugin.getWorkspace();
}

/**
* Returns the string from the plugin's resource bundle,
* or 'key' if not found.
*/
public static String getResourceString(String key) {
ResourceBundle bundle= HelloPlugin.getDefault().getResourceBundle();
try {
return bundle.getString(key);
} catch (MissingResourceException e) {
return key;
}
}

/**
* Returns the plugin's resource bundle,
*/
public ResourceBundle getResourceBundle() {
return resourceBundle;
}
}

W二个源文g SampleAction.java 包含的类执行在清单文g的操作集合中指定的操作?SampleAction 实现?IWorkbenchWindowActionDelegate 接口Q它允许 Eclipse 使用插g的代理,q样不是在万不得已的情况下,Eclipse 无需装入插gQ这优化工作在装入插件时发生内存和性能斚w的问题降到最低)?IWorkbenchWindowActionDelegate 接口Ҏ使插件可以与代理q行交互Q?


清单 6. IWorkbenchWindowActionDelegate 接口Ҏ

package com.example.hello.actions;

import org.eclipse.jface.action.IAction;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.IWorkbenchWindowActionDelegate;
import org.eclipse.jface.dialogs.MessageDialog;

/**
* Our sample action implements workbench action delegate.
* The action proxy will be created by the workbench and
* shown in the UI. When the user tries to use the action,
* this delegate will be created and execution will be
* delegated to it.
* @see IWorkbenchWindowActionDelegate
*/
public class SampleAction implements IWorkbenchWindowActionDelegate {
private IWorkbenchWindow window;
/**
* The constructor.
*/
public SampleAction() {
}

/**
* The action has been activated. The argument of the
* method represents the 'real' action sitting
* in the workbench UI.
* @see IWorkbenchWindowActionDelegate#run
*/
public void run(IAction action) {
MessageDialog.openInformation(
window.getShell(),
"Hello Plug-in",
"Hello, Eclipse world");
}

/**
* Selection in the workbench has been changed. We
* can change the state of the 'real' action here
* if we want, but this can only happen after
* the delegate has been created.
* @see IWorkbenchWindowActionDelegate#selectionChanged
*/
public void selectionChanged(IAction action, ISelection selection) {
}

/**
* We can use this method to dispose of any system
* resources we previously allocated.
* @see IWorkbenchWindowActionDelegate#dispose
*/
public void dispose() {
}

/**
* We will cache window object in order to
* be able to provide parent shell for the message dialog.
* @see IWorkbenchWindowActionDelegate#init
*/
public void init(IWorkbenchWindow window) {
this.window = window;
}
}



回页?/font>


q行和调试插?/font>

当开?Eclipse 的插件时Q必d?Eclipse q用新的插g重新启动它以便进行测试和调试Q这很笨拙。幸好,Eclipse PDE 提供了一个自托管Qself-hostedQ的开发环境,它让您无需插件安装在工作台的单独实例中即可运行?/p>

要运?Hello 插gQ选择 Run=>Run As=>Run-time Workbench来启动另一?Workbench 实例Q而该实例d了插件的菜单选项和工hQ如?5 所C?


?5. 在运行时工作Cq行?Hello 插g
Hello 插g

我们可以通过单击工具栏按钮或从“Sample Menu”菜单激zL件。Q何一U方法都会生成一个框Q其标题是“Hello Plug-in”,内容是“Hello, Eclipse world”,以及一?OK 按钮Q按该按钮可以关闭这个框?/p>

通过选择 Run=>Debug As=>Run-time WorkbenchQ按cM的方法调试插件。这ơ,当插件在W二个工作台实例中运行时Q我们可以在最初的工作C单步执行源代码,以及查变量等?

一旦插件经q测试ƈ准备发布Q我们就需要将它适当打包Q以便在 Eclipse 中安装?/p>

回页?/font>


打包插g

Eclipse 在启动时会查看其插g目录来确定要装入哪些插g。要安装插gQ我们需要在插g目录中创Z个子目录Qƈ程序文件和清单文g复制到那里。徏议目录名U能? C插件的标识Qƈ且后面跟下划U和版本P但是q种做法不是必需的。假?Eclipse 安装?C:\eclipse 中;我们要创Z个目录:

C:\eclipse\plugins\com.example.hello_1.0.0.

按照 Java E序的标准,我们的程序文仉要归档到 .jar 文g??我们的插件清单文Ӟ您也许记得它包含q个:


<runtime>
<library name="hello.jar"/>
</runtime>

要创?hello.jar 文gQ我们可以通过H出昄目名称Qƈ?Eclipse 菜单选择 File=>ExportQ以导出插g文g。选择 JAR 文g作ؓ导出方式Q按 NextQ然后浏览到我们为它创徏的目录。下一步,我们q需要将 plugin.xml 文g复制到这个目录。也可以使用 File=>Export菜单选项Q但误C选择 File System 作ؓ导出目的圎ͼ?

q就是安装插件所需的全部操作,但您需要停止ƈ重新启动 EclipseQ以便能识别q个新的插g。从帮助菜单中选择“About Eclipse Platform”,可以扑ֈ关于已安装插件的信息Q包括版本号。在出现的屏q上有一个按钮是 Plug-in DetailsQ向下滚动列表来L Hello 插g及其版本受?/p>

回页?/font>


更新插g版本

在目录名UC包含版本L目的是允许在同一台机器上共存某个插g的多个版本(每次只装入一个版本)。我们可以通过创徏一?Hello 插g的已更新版本来看看这是如何工作的Q例如,?plugin.xml 文g中的版本hҎ?.0.1”,然后?SampleAction.java 中的文本更改成“New and improved Hello, Eclipse world”。从 Eclipse 菜单中选择 Project=> Rebuild All。下一步,项目文件以 JAR 形式导出到新的插件目录,例如Q?com.example.hello_1.0.1 。将修订q的 plugin.xml 文g复制到同一个目录中。当停止q新启?Eclipse Ӟ只会装入已更新的插g?



回页?/font>


插g片段和功能部?/font>

Eclipse 由插件组成,但在开?Eclipse 的插件时Q还要慎重考虑另外两个U别的组??插g片段和功能部件?/p>

插g 片段Q如名称所暗示的)是完整插件的l成部分 ?目标插g。片D|供的功能与目标插件的功能合ƈ。片D可以用 于将插g本地化成各种语言Q在无需形成一个全新发行版的情况下Q以增量形式功能部件添加到现有插gQ或者提供特定于q_的功能。在许多斚wQ片D与插g 一栗主要的区别是片段没有插gc??片段的生命周期由其目标插件管理。此外,片段的清单文件叫? fragment.xmlQ它列出了目标插件的标识和版本号Q以及片D늚标识和版本号?

另一斚wQ插?功能部gҎ不包含编码。在 Eclipse 体系l构术语中,功能部g是将一l相x件打包到完整的品中。例如,JDT 是包含了?Java ~辑器、调试器和控制台q样的插件的功能部g。名?feature.xml 的清单文件描qC一个功能部件归档文件。在其中Q该清单文g包含了对该功能部件所包含的插件和其它资源的引用、关于如何更新该功能部g的信息、版权信息和 许可证信息?

?Eclipse 中, d能部?/i>讄?Eclipse q_的外观。主功能部g旨在定诸如l予 Eclipse 其n份的闪屏和其它特征之cȝ东西。Eclipse 只允怸个主功能部g。用q种方式Q通过创徏一l插Ӟ它们打包到功能部g中,q且使这个功能部件成Z功能部gQ就可以重新创徏 Eclipse 的品牌,q将它用于创建全C不同的品。如果从 Eclipse.org 下蝲Q缺省主功能部g?eclipse.org.platform ?



回页?/font>


后箋步骤

在插件的介绍里我们只是稍微了解一些插件的必要用法。学习插件的更多知识的最佛_考资料是 Plug-in Developer's GuideQ? 可以?Eclipse 中的帮助菜单中获得该指南。该文档包含了编E指南、Eclipse API 和插件扩展点的参考大全、Eclipse.org 上可用的~程CZ的指南,以及常见问题列表。另一个优U参考资料是 Eclipse 本n的源代码。根据您的兴,您也许想要查找一些示例,以了解不同工作台功能部gQ如视图和编辑器Q是如何扩展的,或者如何? SWTQEclipse 囑Ş APIQ。此外,下面?参考资?/font>可以帮助您学到更多知识?



回页?/font>


参考资?



Vincent Chen 2006-02-15 22:38 发表评论
]]>
վ֩ģ壺 ȫaһëƬ˰| 69ƵƬ| ŮƵ| þ޾Ʒ˳ۺ| ˮwww| ޹רһ| ˸߹ۿƵ| ֳִˬƵ| ù͵v͵v| һ߹ۿ | ںӰԺ߹ۿƵ | պĻ| 㻨ѸƵ| avۺ߹ۿ| 51ƵƷȫ| ߹ۿ| ŮƵվ| ޾ƷþavƬȥҲ| Ʒ| ŷۺһ | ƷѾþþþõӰ| ۺɫ߹ۿ| 99re6߾Ʒѹۿ| ޵һ㽶_a| ѸƵ| ޳aƬ߹ۿ| ˵һ| ڵһ| www.91| ѿֻվ | СƵ߹ۿ| aػëƬѹۿ| þ޴ɫĻþþ| ƷŮٸavѾþ| ѹۿƵ| Ӱѹۿ| ҹ뾫Ʒѿ| ۺɫ| ѲػɫëƬ| þù߳׽ѹۿ| ˳վ999þþۺ|