SWT跨平台的4个绑定

1、跟JVM bit-version绑定太死。
        SWT bit version有32-bit和64-bit两种,同样,jdk也有32-bit和64-bit两种。经过多次测试,发现32-bit SWT只能安装在32-bit JDK 上,而64-bit SWT也只能安装在 64-bit JDK上,两都不能交叉使用,即32-bit SWT 不能在 64-bit JDK 上使用, 64-bit SWT 不能在 32-bit JDK 上使用,这两种情况都会报类似"版本不兼容“的错误。这个可能不算大问题,但也会消耗你的人日,我在其它两篇文章也提到这个问题。

Installanywhere:当64位swt遇上32位JVM 

处理SWT bit版本与JDK bit版本的对应 

2、跟操作系统绑定太死。
        SWT是通过C语言调用系统底层,实现其界面效果。这样,对应不同的操作系统,就有使用不同的SWT包,Eclipse官网上也给出了这些包以及对应的操作系统,比如eclipse3.7的:http://download.eclipse.org/eclipse/downloads/drops/R-3.7.2-201202080800/index.php#SWT

        但实际上,你会发现,这个跨平台功能实际上没那么强大,特别是Linux平台的。你会发现,某个SWT包标明是可以运行在Linux平台的,但Linux平台包容众多平台,如Suse、RedHat、Ubuntu、Centos等,相同的SWT包,有可能在这些平台上,运行效果不一样,有些包根本都不能兼容该平台的。别说SWT,就是Eclipse也会出现这问题。比如,我在测试时,发现,Eclise3.5 Linux版本的不能在Redhat6服务器版本安装,Eclise3.6就可以,安装3.5时没问题,就是运行时,无法远行,也没有报错、日志之类的查看。但无论是3.5还是3.6,都可以在Ubuntu上安装。


3、跟浏览器绑定太死。
        SWT里面有一个组件Browser,能够调用系统安装的浏览器来显示HTML文件或是打开URL链接。查看该组件源码,会发现该组件的实现过程,对要调用的浏览器做了很多类似判断,个人感觉,这些判断有点HardCode,容错处理也有点不全面,排错不方便。在Windows平台是好好的,但换到Linux平台,特别是要支持多个Linux平台,这时问题就来了。如:

Exception in thread "main" org.eclipse.swt.SWTError: No more handles [Unknown Mozilla path (MOZILLA_FIVE_HOME not set)]
    at org.eclipse.swt.SWT.error(SWT.java:4308)
    at org.eclipse.swt.browser.Mozilla.initMozilla(Mozilla.java:1826)
    at org.eclipse.swt.browser.Mozilla.create(Mozilla.java:687)
    at org.eclipse.swt.browser.Browser.<init>(Browser.java:99)
 
Exception 2: after update xulrunner
org.eclipse.swt.SWTError: XPCOM error -2147467259

 at org.eclipse.swt.browser.Mozilla.error(Mozilla.java:2089)

 at org.eclipse.swt.browser.Mozilla.create(Mozilla.java:458)

 at org.eclipse.swt.browser.Browser.<init>(Browser.java:119)

 at com.ibm.team.apt.internal.ide.ui.editor.WikiFormPage2.createBrowser(WikiFormPage2.java:816)

 

虽然Eclipse官网上提供了FAQ,但你会发现这些根本不够用。SWTFAQ

浏览器问题很容易让你陷入新的技术,如xulrunner。我还没找到有新方案能够代替Browser组件的,这个Browser真不好。

 

4、不同平台,实现存在差异。这个不列举了,在实现过程,多对比,会发现一些差异的。

 

        以上是个人使用SWT遇到的一些问题,有错误之处,欢迎指正。我觉得,用SWT来开发跨平台的产品,还是要谨慎考虑。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值