如何使用 Maven 构建 SWT 应用程序

2022-09-01 20:41:58

我试图学习swt,我使用maven进行所有构建,并为我的IDE使用eclipse。当从 maven 存储库中获取 swt jar 时,我得到:

Exception in thread "main" java.lang.UnsatisfiedLinkError: no swt-pi-gtk-3034 in java.library.path
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1709)
    at java.lang.Runtime.loadLibrary0(Runtime.java:823)
    at java.lang.System.loadLibrary(System.java:1030)
    at org.eclipse.swt.internal.Library.loadLibrary(Library.java:100)
    at org.eclipse.swt.internal.gtk.OS.<clinit>(OS.java:19)
    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:112)
    at wenzlick.test.swt.main.Main.main(Main.java:30)

有没有人成功地得到了一个swt应用程序来构建和运行maven?

编辑:我做了一些研究,发现了问题。看看我下面的帖子


答案 1

我已经将最新SWT版本(4.2.2)的win32 / 64和osx工件上传到googlecode存储库,您可以在此处找到它:

https://swt-repo.googlecode.com/svn/repo/

要使用它,只需将以下内容放在您的pom中.xml:

<repositories>
    <repository>
        <id>swt-repo</id>
        <url>https://swt-repo.googlecode.com/svn/repo/</url>
    </repository>
</repositories>

然后,您可以只引用与您的平台相关的 SWT 依赖项。例如:

    <dependency>
        <groupId>org.eclipse.swt</groupId>
        <artifactId>org.eclipse.swt.win32.win32.x86</artifactId>
        <version>4.2.2</version>
    </dependency>

对于其他平台,只需将 artifactId 替换为适当的值:

  • org.eclipse.swt.win32.win32.x86
  • org.eclipse.swt.win32.win32.x86_64
  • org.eclipse.swt.cocoa.macosx
  • org.eclipse.swt.cocoa.macosx.x86_64

其他平台和旧版本的工件也可用,请访问上面的存储库链接以查找它们。

祝您编码愉快!


答案 2

听起来像是Maven正在引入旧版本的SWT。从 v3.4(及更高版本)开始,swt.jar就是您所需要的。SWT 将根据需要自动提取 s、s 或 s。您需要担心的唯一棘手的事情是确保您获得正确的swt.jar(意味着您的平台)。.so.jnilib.dll

尝试手动在本地存储库中安装 SWT 3.4。如果这仍然给你同样的问题,那么有些东西可能是可疑的。之后,我会尝试手动提取 s,然后在调用时使用开关指定变量。有时在Linux上,由于依赖性问题(在libpango之类的东西中),库的加载可能会失败。在这种情况下,错误通常只是通用的 ,使问题难以调试。.sojava.library.path-DUnsatisifedLinkError


推荐