将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拷贝过去,会少很多问题。