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

Dav*_*ave 24 java swt maven-2

我试图学习swt,我使用maven进行所有构建,并使用eclipse进行IDE.当从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)
Run Code Online (Sandbox Code Playgroud)

有没有人成功获得使用maven构建和运行的swt应用程序?

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

uri*_*ish 19

我已将最新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>
Run Code Online (Sandbox Code Playgroud)

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

    <dependency>
        <groupId>org.eclipse.swt</groupId>
        <artifactId>org.eclipse.swt.win32.win32.x86</artifactId>
        <version>4.2.2</version>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

对于其他平台,只需将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

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

快乐的编码!

  • 至于垂死的谷歌代码服务:看看这个更新的答案:http://stackoverflow.com/questions/5096299/maven-project-swt-3-5-dependency-any-official-public-repo/9985222# 9985222 (2认同)

Dan*_*wak 9

听起来Maven正在推出一个旧版本的SWT.随着V3.4(或更高版本)中,SWT.JAR是所有你需要的.SWT将根据需要自动提取.sos,.jnilibs或.dlls.您需要担心的唯一棘手的事情是确保您获得正确的swt.jar(意味着您的平台).

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


Ste*_*han 5

自 2013 年(此后成立年份)以来,情况发生了变化。SWT 现在发布在 Maven Central 上。以下是撰写本文时的坐标:

<dependency>
    <groupId>org.eclipse.platform</groupId>
    <artifactId>org.eclipse.swt.win32.win32.x86_64</artifactId>
    <version>${swt.version}</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

您可能会发现这张很有趣。

适用于 Windows 64 位的最新 SWT 人工制品:https : //mvnrepository.com/artifact/org.eclipse.platform/org.eclipse.swt.win32.win32.x86_64