2010-05-27 260 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

而這正是你需要的版本。