The SWT FAQ 中文(9)

(英文原文:http://www.eclipse.org/swt/faq.php)

翻译:Frank(frank(at)zijinshi.cn)

版本:Version 0.9

The SWT FAQ

17.问:为什么出现了这个错误信息:"java.lang.NoClassDefFoundError: org/eclipse/swt/internal/XXX/OS."?
答:在某些平台上,比如 GTK上,SWT 被划分成了好几个jar。所以,你还得确保所有需要的jar都在classpath中列出来了。这些必需的jar是:
  • swt.jar (所有的平台)
  • swt-pi.jar (某些平台比如说 GTK 和 Carbon)
  • swt-mozilla.jar (用于 GTK 和 Motif 的浏览器组件)
  • swt-gtk.jar (适用于Linux Motif)
18.问: 为什么出现了这个错误信息:"java.lang.UnsatisfiedLinkError: no swt-win32-3232 in java.library.path."?
答:你需要把SWT JNI 库(它允许java使用本地组件)放在一个Java虚拟机能够找到它的地方。

SWT JNI libraries包含在 SWT 下载文件中。

可以通过以下几种方式让Java应用程序知道库的路径。

  1. 在虚拟机家载参数中设置库的路径。

    在Launch Configuration Dialog 中,选择 Arguments 页面,在 VM 参数域输入 -Djava.library.path={runtime-library-path} ,这儿 runtime-library-path 就是包含本地代码库的目录的全路经。

    这种方案意味着SWT库不得不手动的加到每个使用SWT的项目中去。

  2. 在环境变量中设置库的路径。

    对于Windows系统来说,在PATH环境变量中加上上面提到的runtime-library-path就可以了。
    在Win 9X 中,你需要修改 Autoexec.bat 文件。
    在 NT 或 2K 机器中,你可以通过 My Computer > Properties > Advanced > Environment Variables 编辑变量。

    在linux/unix 系统中,修改 LD_LIBRARY_PATH 变量来包含runtime-library-path。

  3. 把 SWT 库复制到一个已经是Java库路经的目录中去。比如说,jre/bin目录。

    这个解决方案的缺点是,每次你升级eclipse之后,你还得记住复制本地代码库。

自Eclipse 3.1开始,SWT 插件 中就在SWT.jar中加入了JNI库。它支持OSGi 和 Eclipse RCP。如果你使用了这个插件,你必须把库包含到路径中去。


(待续…)

你可能感兴趣的:(java,eclipse,linux,jni,osgi)