swt原本是eclipse为开发eclipse而设计的一套gui,在sun的jdk里是没有这个包的,如果要在linux下独立运行swt,需要下载 for linux的swt.jar,或者更为多见的情况是直接安装3.1之后版本的eclipse,这个包就已经附带了。具体位置按我的3.2版本是:
$ECLIPSE_HOME/plugins/org.eclipse.swt.gtk.linux.x86_3.1.1.jar, 如果没有进行配置,在eclipe中运行swt程序,如果是以run as swt application来运行的话,没有问题,eclipse会自动 加入所要的包(当然之前的编译还是要指定要导入这个包的),但如果以run as java application或者在终端模式下敲入 java app来运行swt的话,就会有异常抛出。
在网上查了不少资料,仍然没有解决问题,最后还是找到官方的FAQ:http://www.eclipse.org/swt/faq.php#missingdll才搞定。
Swt 编译时,指定要导入的包,是可以正常通过的,但仍然不能以独立方式运行,是运行环境还没有配置,究其原因是要swt独立运行,其运行环境就不再由 eclipse自动设定,而是跑在jre上,而 jre里是没有这个包的,但如果你直接将这个包放到jre里也是不成功的,首先你必须将这个包(前面提到 的swt.jar文件)解压缩到某个目录下,管理方便起见,可以在jre的lib目录下新建一个swt子目录,我的是放在这里: /opt/jdk150/jre/lib/swt。最后只需要在 profile中设置一下两个必须的环境变量:
export CLASSPATH=/opt/jdk150/jre/lib/swt:.:$CLASSPATH
export LD_LIBRARY_PATH=/opt/jdk150/jre/lib/swt
为了应用新的配置,重启终端,这时你就可以直接敲入java app运行swt了(注:app是你的swt类名)。
上面所叙述内容是经过验证的,如果你在配置不成功的话,建议首先运行一个非swt的普通的java程序,比如hellworld之类,看是否能正常运行,如果这里都通不过的话、、、,就不多说了。
如果你没有装eclipse而是down一个for linux的swt.jar来用的话,好象还要设置一个SWT_HOME=/xxx/swt(你的 swt.jar安装的路径),并将之添加到 CLASSPATH和LD_LIBRARY_PATH,再如果还要运行swt browser的话还要设置一 个MOZILLA_FINE_HOME=/opt/firefox(你的mozilla或者firefox所在的目录),并添加到 LD_LIBRARY_PATH即可。
4/19/2007
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment