PanTian 香草园主

关注软件产业的历史、现在、未来。 30而立,立志的立,新的开始……
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Eclipse3.2.1下的RCP程序,Export到Solaris motif解决办法

Posted on 2006-10-17 11:12  pantian  阅读(1749)  评论(2编辑  收藏  举报

关键词:Windows,Eclipse,RCP,Export,Solaris motif

[摘要]最近需要把一个在Windows下,使用Eclipse3.2.1编写的RCP程序,Export到Solaris motif平台运行。
但由于Eclipse从3.1推出RCP开始,在Export到多平台时,其它的平台都是可以正常使用的,就是Export到Solaris motif平台,会出现各种问题,导致无法正常打包,或者打出来的包无法正常运行。我在经过各种努力尝试之后,得到一解决办法,特记录之,以备查用。

受影响的版本包括:3.1、3.1.1、3.1.2、3.2、3.2.1、3.3M2(当前最新版)。

此文随手写来,所以就略去很多废话,直奔主题。

[现象]
    一个在Eclipse环境下可以正常运行RCP程序,并且也可以输出到Windows平台正常运行,当前使用的Eclipse平台为3.2.1版。
    但由于应用需要将该RCP程序Export到Solaris motif平台,结果在Export的过程中,报了无数的错误,并生成了相应的log文件。经仔细检查,发现这些错误好像是缺少与Solaris motif平台相关的SWT所致,当然或许还有其它的错误,总之,就是Export失败了。

[解决方法]

    1、既然没有相应的SWT程序,那么,我们就先找到这些程序(如果你对自己的技术很自信,也可以找到相应的源程序重新编译),在下载RCP delta pack地方,有个eclipse-RCP-3.2.1-solaris-motif.zip程序,先Down下来,解压缩。
    A、把其中的 plugins\org.eclipse.swt.motif.solaris.sparc_3.2.1.v3235.jar 文件COPY到RCP delta pack解压缩后的plugins目录下;
    B、把其中的 features\org.eclipse.rcp_3.2.1.r321_v20060801-2ekW2BxmcpPUOoq 目录也COPY到RCP delta pack解压缩后的plugins目录下,并改名为:org.eclipse.rcp.source.solaris.motif.sparc_3.2.1.r321_v20060801-2ekW2BxmcpPUOoq

    2、完成第一步之后,再次编译Export到Solaris motif时,已经不再报错了。但是,成功输出的包里面,没有可执行的主程序文件,也就是说,你没有办法执行该程序。
    继续查找错误……
    既然没主程序,那么是不是跟 features\org.eclipse.platform.launchers_3.2.1.v3233\bin\motif\solaris\sparc 下的文件有关呢?打开一看,shit,里面竟然是个文件名为 eclipse 的文件,这是个超低级的bug,按照RCP的规则,此处应该是个名为 launcher 的文件,大家也可以参考一下其它版本,如: aix\hpux\linux等平台下的相应文件的名字。
   因此,废话少说,备份该文件之后,把这个文件改名为 launcher

    3、嗯,现在应该可以输出主程序文件了吧?但是,意料之中的事情没有发生,看来,还有其它的错误没有被发现……
    在RCP delta pack里到处闲逛,发现在 features\org.eclipse.platform.launchers_3.2.1.v3233 目录下,比以前的Eclipse多了一个build.xml文件,打开一看,呵呵,原来,这个文件里根本就没有设置相应的Solaris motif的编译参数。就好像在makefile文件里根本就没有设置编译这个文件一样,又是一个超低级bug。
    修改该文件。
    A、找到 <target name="rootFilesgroup_group_group"> 块,在里面添加:<antcall target="rootFilessolaris_motif_sparc"/> ;
    B、在该文件前面一点的位置,找个适当的地方,插入下面这个块:

    <target name="rootFilessolaris_motif_sparc">
        
<mkdir dir="${feature.base}/solaris.motif.sparc/${collectingFolder}"/>
        
<copy todir="${feature.base}/solaris.motif.sparc/${collectingFolder}" failonerror="true" overwrite="true">
            
<fileset dir="${basedir}/bin/motif/solaris/sparc" includes="**"            />
            
<fileset dir="${basedir}/bin" includes="startup.jar"            />
        
</copy>
        
<chmod perm="755" dir="${feature.base}/solaris.motif.sparc/${collectingFolder}" includes="${launcherName}" /> 
    
</target>

    4、再次尝试Export…… OK,收工了


注意:该方法只适合Eclipse 3.2以上的版本,在Eclipse 3.1的版本中,相应错误的解决办法,请参考我以前写的 用Eclipse 3.1.1开发图形编辑程序