gpt4 book ai didi

java - SWT + Maven + Eclipse = java.lang.UnsatisfiedLinkError : no swt-carbon-3346 or swt-carbon in swt. 库.path

转载 作者:行者123 更新时间:2023-12-02 08:15:53 37 4
gpt4 key购买 nike

我正在尝试运行一个 hello world SWT 应用程序:

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 的 macOS 版本,与 eclipse/maven 一起使用。有人见过这个吗?

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)

最佳答案

SWT 是使用 native UI 库(在本例中为 Mac Carbon 库)实现的,并且需要一些 JNI 代码将 SWT 调用编码到 native 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 库可能会非常有帮助。

关于java - SWT + Maven + Eclipse = java.lang.UnsatisfiedLinkError : no swt-carbon-3346 or swt-carbon in swt. 库.path,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6460274/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com