PanTian 香草园主

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

关键词: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开发图形编辑程序

Feedback

#1楼  回复 引用   

2006-10-19 11:53 by shsalex[未注册用户]
恭喜园主。
园主为什么不把这个报告到eclipse主站,看看eclipse team是不是有其他的解释。

#2楼[楼主]  回复 引用 查看   

2006-10-19 15:01 by pantian      
@shsalex

类似的错误在3.1时,就有人提交过bug了,但一直没有得到完全改正,不知道为什么?(在3.2RC5里,好像是解决了这个问题,但正式版发布时,还是原来的样子)

而且,在3.2版时,也有很多人碰到这个问题,在RCP的新闻组里,就有奥地利的兄弟在问怎么办?回答的人说:自己回去编译源程序。

我的英语太差,看看就行了,提交bug这种事情,就免了。