2007年4月15日星期日

升级Eclipse要注意的问题

将Eclipse 3.1升级到3.2.2,用回原来的Workspace,运行SWT的应用程序时,会出现下列的错误:

Exception in thread "main" java.lang.UnsatisfiedLinkError: no swt-win32-3236 in java.library.path

如果是升级到3.2,会出现:

Exception in thread "main" java.lang.UnsatisfiedLinkError: no swt-win32-3232 in java.library.path

这两个错误原来在独立运行SWT应用程序时,支持SWT运行的dll找不到时才会出现,为什么在Eclipse里面也会出现这两个错误,原来在Eclipse运行SWT应用程序时,使用到的dll是放在Workspace下的.metadata\.plugins\org.eclipse.pde.ui\xxxx.swt中,由于用的是原来的Workspace,所以这个目录下的dll还是旧版本3.1的,但程序使用的jar的库是3.2.2的,运行时找不到正确版本的Dll就会出错。所以升级完Eclipse,记住要替换这个目录下的dll,原来的SWT应用程序才能在Eclipse下正常运行。RCP程序更麻烦,为了兼容3.1的模式,一旦判断使用的是旧版本的Workspace,会在Eclipse所在的盘的根目录下创建target/eclipse目录把3.1的所有RCP支撑库全部放在这里,运行也会出错,目前还找不到解决的办法。

所以升级Eclipse,最好重新创建新的Workspace,再把原来Workspace的程序的source拷贝过去,会少很多问题。

2007年4月3日星期二

拥抱FreeBSD

Gseeker报道了《全美前20大网站的停机时间:YouTube及Blogger最长》,其中最好的是Yahoo!,全年的停机时间为0。Yahoo!使用了什么操作系统:FreeBSD。

根据“我志愿,我成就”的丁磊同学的说法Hotmail其实也是运行在FreeBSD上,但是Hotmail是我用过的最不稳定的邮件系统。难道好东西一到了微软的手上就玩完了?确实是这样,但是错不在FreeBSD,而是微软把Hotmail从FreeBSD上迁移到了Windows 2000:

连苹果的Mac OS X也是基于FreeBSD的,所以,我们有什么理由不拥抱FreeBSD呢?

相关链接:

2007年4月2日星期一

offsetof原来是个很简单的宏

看一些人的source的时候,发现他们使用offsetof 求某个结构体的特定成员在结构体里面的偏移量。原来以为很复杂,在/usr/include/linux/hfs_sysdep.h找到它的定义:

#define offsetof(TYPE, MEMB) ((size_t) &((TYPE *)0)->MEMB)

太巧妙了!!!