在Windows 64位系统上使用SWT

40

我的应用程序抛出以下异常。

在主线程中发生异常:java.lang.UnsatisfiedLinkError: 无法在64位JVM上加载32位SWT库。

如何解决这个问题?需要哪个jar文件的名称?

6个回答

43

3
这个说法是正确的,但需要注意的是,如果您无法控制使用哪个 SWT(例如,在64位系统上使用64位JVM为32位RCP应用程序开发插件),则应安装并使用32位JVM来启动您的产品,而不是修改RCP目标平台(请参见Mario Marinato的回答)。 - Caspar
2
新版本:64位SWT - Adil
2
64位的SWT相当难找。我必须非常仔细地寻找才能找到它。基本上,在http://www.eclipse.org/swt的“发布”下,点击“更多”,然后查找“Windows(x86_64)”。 - Ali

7

几周前我遇到了同样的问题。我们开发了一个必须使用32位SWT的RCP应用程序,但我们使用的是64位机器。

我们需要更改Eclipse的配置,使其指向32位JVM。我们在Window -> Preferences -> Java -> Installed JRE's中完成了这项工作。在此首选项页面上,我们将所有引用从“Program Files”更改为“Program Files(x86)”。

希望能在某种程度上帮到你。


如果您正在64位版本的Eclipse中开发32位RCP应用程序,则还必须配置应用程序的目标平台,以明确使用x86架构。否则,Eclipse PDE仍将设置64位版本的SWT库作为插件依赖项。 - Henno Vermeulen

2

我的答案基本上是以上发布的答案的编译,特别是用户@ClickUpvote的评论,他提供了(在我看来)最好的答案。所以这是它,我在发布之前测试了它:

如果您的应用程序引发以下异常(在Windows 7 64位,带JVM 64),

Exception in thread "main" java.lang.UnsatisfiedLinkError: Cannot load 32-bit SWT libraries on 64-bit JVM.

那么解决方案如下:在64位JVM中,需要64位SWT。

可以按照以下描述下载当前版本 - 非常隐蔽:

稳定版

Windows、Linux、OS X、更多...

Windows(x86_64)(支持的版本)(http)6.3 MB swt-4.4-win32-win32-x86_64.zip

这正是您需要的版本。


2

1

你只是在错误的SWT版本上构建。要么下载64位Eclipse,要么获取增量包并针对正确的目标环境构建。


“Delta pack”是什么?我很好奇是否有通用的解决方案,因为我希望使我的SWT应用程序动态选择正确的jar包。此外,您应该记住,SWT需要与您的虚拟机版本相同--不一定与您的操作系统版本相同。 - Paul Lammertsma
Delta Pack不会让您执行任何“动态”操作,它只是为您提供了从任何目标构建任何目标的能力。 http://louismrose.wordpress.com/2009/01/23/installing-the-rcp-delta-pack-for-eclipse/ - andyczerwonka

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接