是我弱,还是eclipse弱?org.eclipse.core.runtime.applications扩展点实战

        由于项目需要,我需要做一个RCP项目,那就自然而然的要用到org.eclipse.core.runtime.applications这个扩展点了,因为这个是RCP的核心啊,这个扩展点定义的application类就是RCP应用的主程序啊,然而,在运用过程中,我郁闷了。
        问题描述:我现在在做一个RCP项目,project名字叫做CstnetSPS,这个过程中我新建了一个product configuration文件xxx.product,这个文件中就是配置了一个product的id,以及application属性,但是这个地方配置application的时候是下拉菜单,就是eclipse会根据plugin.xml的内容来给出一些选项,比如我plugin.xml中定义了一个application,它的id叫application的话,那么在xxx.product配置的时候,下拉菜单中就有一项CstnetSPS.application的选项,于是选上这个选项以后,在配置一下所需要的包,就可以launch the product了。    
        但是奇怪的是:当我在plugin.xml中将application的id定义为我自己设计的时候,比如:cn.cstnet.cstnetsps.application,于是在xxx.product配置相应的显示就是选择CstnetSPS.cn.cstnet.cstnetsps.application了。但是单击launch the product以后出现了异常,说是java.lang.RuntimeException: Application "CstnetSPS.cn.cstnet.cstnetsps.application"
could not be found in the registry. The applications available are: cn.cstnet.cstnetsps.application
 
        我就觉得很奇怪,是不是定义application的id的时候不可以中间有“.”啊?

        上面是问题出现时我记录下来的,可能不太清楚,我解释一下,就是说,在eclipse plugin project中,plugin.xml中定义org.eclipse.core.runtime.applications扩展点的时候,就需要定义一个application项,如:
   <extension
         id="application"
         point="org.eclipse.core.runtime.applications">
      <application>
         <run class="cn.cstnet.cstnetsps.Application"/>  <!--对应这个application id所关联的application类全名-->
      </application>
   </extension>
        同时,在新建product configuration file的时候呢,product configuration editor会图形化提示用户配置一个product项,包括id,name,以及application属性。这段就对应于plugin.xml中的
   <extension
         id="product"
         point="org.eclipse.core.runtime.products">
      <product
            application="CstnetSPS.application"
            name="cstnetsps"/>
   </extension>
  
        有id,name,以及application。那么这两个地方的application,都需要关联到同一个实现类上去,必须一致,在这里eclipse默认的实现是:在application扩展点中定义其id的同时,也分配上它的实现类,这样就关联上了实现类和id,而在product扩展点中,application属性为了也指向上面定义的同一个实现类,就将该属性定义为:工程名+application的id号。如上:工程名为CstnetSPS,application扩展点application的id是application,于是有product扩展点中application属性的内容就是CstnetSPS.applicaiton了。这样是能够正常执行的,不管是将project以eclipse application的方式启动,还是以product的方式启动,都能正常运行。
        但是,正如同我前面所提出的问题,我在写plugin.xml的时候,当写到application扩展点给application定义id的时候,我就习惯性的把扩展点定义为cn.cstnet.cstnetsps.application。结果在product扩展点中相应的application属性就变为CstnetSPS.cn.cstnet.cstnetsps.application了,然而点击launch the product以后,抛出前面给出异常错误,而只有手动更改xxx.product文件,将application属性修改为cn.cstnet.cstnetsps.application(去掉前面的工程名),工程又可以以product的方式启动了,但是仍然无法以eclipse application的方式启动。
        在请教了几个同事以后,我大胆猜测:org.eclipse.core.runtime.applications扩展点中application的id号只能定义为单个的单词,否则就会出现我出现的错误。欢迎指正!!!!
        要是我的猜测是对的话,那到底是我弱?还是eclipse弱?难道定义一个id还要限定只能用一个单词???????
这样是不是对用户不友好?????

转载于:https://www.cnblogs.com/keer/archive/2007/10/15/924957.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值