首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SWT + Maven + Eclipse = java.lang.UnsatisfiedLinkError:在swt.library.path中没有swt-carbon-3346或swt-carbon

SWT + Maven + Eclipse = java.lang.UnsatisfiedLinkError:在swt.library.path中没有swt-carbon-3346或swt-carbon
EN

Stack Overflow用户
提问于 2011-06-24 04:31:22
回答 1查看 1.5K关注 0票数 0

我正在尝试让hello world SWT应用程序运行起来:

代码语言:javascript
复制
public static void main(String args[]) throws IOException{
    Display display = new Display ();
    Shell shell = new Shell(display);
    shell.open ();
    while (!shell.isDisposed ()) {
        if (!display.readAndDispatch ()) display.sleep ();
    }
    display.dispose ();
}

但我一直收到以下异常。我的org.eclipse.swt.carbon的macosx版本正在与eclipse/maven一起使用。以前有没有人见过这个?

代码语言:javascript
复制
Exception in thread "main" java.lang.UnsatisfiedLinkError: no swt-carbon-3346 or swt-carbon in swt.library.path, java.library.path or the jar file
    at org.eclipse.swt.internal.Library.loadLibrary(Library.java:219)
    at org.eclipse.swt.internal.Library.loadLibrary(Library.java:151)
    at org.eclipse.swt.internal.C.<clinit>(C.java:21)
    at org.eclipse.swt.widgets.Display.createDisplay(Display.java:943)
    at org.eclipse.swt.widgets.Display.create(Display.java:937)
    at org.eclipse.swt.graphics.Device.<init>(Device.java:119)
    at org.eclipse.swt.widgets.Display.<init>(Display.java:749)
    at org.eclipse.swt.widgets.Display.<init>(Display.java:740)
    at com.wuntee.aat.command.adb.LogCat.main(LogCat.java:30)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-06-24 05:10:14

SWT是使用原生UI库实现的-在本例中是Mac Carbon库-并且需要一些JNI代码来将SWT调用编组到原生Carbon调用。加载JNI库与普通的类加载略有不同(动态库必须首先使用System#loadLibrary加载)。

首先,如果您使用的是64位机器,请确保将-d32参数传递给JRE。(即java -d32 MyTestClass)。Carbon SWT库仅为32位,不能在64位运行时加载。

默认情况下,SWT尝试从类路径中的JAR文件加载.jnilib动态库-库libswt-carbon-3346.jnilib应该在org.eclipse.swt.carbon.macosx... JAR中。SWT将尝试将这个jnilib从您的JAR解压缩到一个临时位置并加载它。

如果由于某种原因(例如,java.io.tmpdir不可写)而无法执行此操作,则此操作将失败。要解决此问题,您应该从org.eclipse.swt.carbon.macosx JAR中提取libswt-carbon-3346.jnilib,并遵循异常提供的说明。(例如,将swt.library.path设置为该jnilib的位置。)

与您的实际问题无关:您使用的是SWT 3.3。从那时起,已经做了很多改变,包括(可能更可取的) Cocoa支持。在最新的Eclipse中升级到最新的SWT库可能会非常有帮助。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6460274

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档