2010-05-27 92 views
39

我的应用程序抛出下面的异常。Windows上的SWT 64位

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

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

回答

41

在64位JVM上,您需要64位SWT。当前版本可以在这里下载:

http://archive.eclipse.org/eclipse/downloads/drops/R-3.6.1-201009090800/index.php#SWT

注意前两个下载,第一个是32倍,其他为64。

注意:即使在64位Windows上,如果您使用32位JVM,您仍然需要32位SWT版本!

+3

这是正确的,但只是一个简短的说明,如果你没有控制通过它可以使用SWT(例如,在64位系统上开发插件,使用64位JVM为32位RCP应用程序),您应该安装并使用32位JVM来启动您的产品,而不是修改您的RCP目标平台(请参阅Mario Marinato的答案)。 – Caspar 2011-08-04 02:03:45

+0

@Casper:正确。 – Daniel 2011-08-04 07:09:24

+2

新版本:[64位SWT](http://www.eclipse.org/downloads/download.php?file=/eclipse/downloads/drops4/R-4.2.1-201209141800/swt-4.2.1 -win32-win32-x86_64.zip) – Adil 2013-01-14 12:24:47

1

您只是针对错误版本的SWT构建。请下载64位Eclipse或获取增量包并根据正确的目标环境构建。

+0

什么是“delta pack”?我对通用解决方案很好奇,因为我很想让SWT应用程序动态地选择正确的jar。 此外,您应该记住,SWT需要与虚拟机的版本相同 - 不一定是您的操作系统。 – 2010-05-30 14:59:47

+0

增量包不会让你做任何“动态”的事情,它只是让你有能力为任何目标建立任何目标。 http://louismrose.wordpress.com/2009/01/23/installing-the-rcp-delta-pack-for-eclipse/ – andyczerwonka 2010-05-31 04:49:12

6

几周前我面临同样的问题。我们开发的RCP应用程序必须使用32位SWT,但我们在64位机器上工作。

我们所要做的就是更改Eclipse的配置,使其指向32位JVM。我们在Window - > Preferences - > Java - > Installed JRE上做了这个。在此首选项页面上,我们将“Program Files”的所有参考文件更改为“Program Files(x86)”。

我希望它以某种方式帮助你。

+0

如果您正在开发64位版本的32位RCP应用程序的Eclipse,您还必须配置应用程序的目标平台以明确使用x86体系结构。否则,Eclipse PDE仍然会将64位版本的SWT库设置为插件依赖项。 – 2015-08-10 14:21:07

2

我的回答更多的是上面贴的答案,尤其是谁提供的(在我看来)最佳答案的用户@ClickUpvote的评论汇编少。所以这里,我只是发布之前测试过它:

如果您的应用程序抛出下面的异常(在Windows 7 64位,与JVM 64)

异常线程“main” java.lang.UnsatisfiedLinkError中:无法在64位JVM上加载32位SW T库。

然后解决方案如下: 在64位JVM上,您需要64位SWT。如下所述

当前版本可以下载 - 漂亮隐藏的很好:

Stable

Windows, Linux, OS X, more...

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

而这正是你需要的版本。