我是一个Java新手,他通过eclipse使用SWT为GUI编写了一个简单的Java程序。代码正常工作,程序能够在eclipse中运行,所以我编译了它,并使它成为一个可运行的jar文件,以便可以在eclipse之外运行。我试着用终端运行它,结果出现了这个错误。
Exception in thread "main" java.lang.UnsatisfiedLinkError: Could not load SWT library. Reasons:
no swt-gtk-4233 in java.library.path
no swt-gtk in java.library.path
Can't load library: /home/abody/.swt/lib/linux/x86_64/libswt-gtk-4233.so
Can't load library: /home/abody/.swt/lib/linux/x86_64/libswt-gtk.so
at org.eclipse.swt.internal.Library.loadLibrary(Library.java:331)
at org.eclipse.swt.internal.Library.loadLibrary(Library.java:240)
at org.eclipse.swt.internal.C.<clinit>(C.java:21)
at org.eclipse.swt.internal.Converter.wcsToMbcs(Converter.java:63)
at org.eclipse.swt.internal.Converter.wcsToMbcs(Converter.java:54)
at org.eclipse.swt.widgets.Display.<clinit>(Display.java:133)
at Class1.main(Class1.java:12)所以现在它似乎找不到libswt-gtk-4233.so和另一个文件。但是,当我查看.swt文件夹时,我有一个libswt-gtk-3740.so而不是4233。
所以它试图找到一个更最新的文件。那么,这意味着我应该更新SWT吗?到底怎么回事?
发布于 2012-11-21 02:18:47
您需要创建一个指向swt的符号链接,以便文件位于/usr/lib/jni目录中。我在这个网站上找到了一个解决方案:月食无法加载SWT库。
使用以下命令:
ln -s /usr/lib/jni/libswt-* ~/.swt/lib/linux/x86_64/发布于 2014-08-29 08:08:38
所以现在它似乎找不到libswt-gtk-4233.so和另一个文件。然而,当我查看.swt文件夹时,我有一个libswt-GTK-3740,所以不是4233。
插件
右击您的项目:
->属性->构建路径
在Java构建路径窗口上,项目的选项卡包含org.eclipse.swt.%GUI%.%PLATFORM%
(您导入的项目)
单击以展开。
编辑本机库位置。
选择工作区,然后整个项目org.eclipse.swt.%GUI%.%PLATFOM%
按Ok,你就完了!
关于:
..so我编译了它,并使它成为一个可运行的jar文件,这样它就可以在eclipse之外运行。我试着用终端运行它,结果出现了这个错误。
我不知道你是如何在Eclipse中运行而不是在终端机运行的。所以我以为你是想在另一个平台上做。对于那些是新的(如我),请阅读wiky:标准Widget工具包
调用SWT的..Programs是可移植的,但是工具箱的实现,尽管部分是用Java编写的,但对于每个平台来说都是独一无二的.
必须将SWT移植到每个需要支持的新GUI库中。与Swing和AWT不同,SWT并不是在每个Java支持的平台上都可用的,因为SWT不是Java版本的一部分.
由于每个平台的SWT实现是不同的,所以必须与每个应用程序一起分发特定于平台的SWT库(JAR文件)。
因此,如果要将项目导出到特定平台,必须在该平台上打开IDE,重复导入插件,但这一次,从-build路径中删除与项目无关的项目(而不是删除项目)。现在,您可以为特定的平台进行编译。
如果您从一个平台切换到另一个平台,在开发项目时,只需编辑构建路径,删除那里不相关的项目即可。
https://askubuntu.com/questions/199622
复制相似问题