2010-05-27 62 views
39

La mia applicazione genera l'eccezione seguente.SWT su Windows 64-bit

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

Come risolvere questo? Qual è il nome del file jar necessario?

risposta

41

Su JVM a 64 bit è necessario lo SWT a 64 bit. Le attuali versioni possono essere scaricate qui:

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

Nota i primi due download, il primo è per x32, l'altra per x64.

Nota: Anche su Windows a 64 bit, se si utilizza la JVM a 32 bit, è ancora necessario la versione a 32 bit SWT!

+3

Questo è corretto, ma solo una breve nota che se non si ha il controllo su quale SWT viene utilizzato (ad esempio lo sviluppo di un plug-in su un sistema a 64 bit con JVM a 64 bit per un'applicazione RCP a 32 bit), è sufficiente installare e utilizzare una JVM a 32 bit per avviare il prodotto anziché modificare la tua piattaforma target RCP (vedi la risposta di Mario Marinato). – Caspar

+0

@Casper: corretto. – Daniel

+2

Nuova versione di: [SWT a 64 bit] (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

1

Stai semplicemente costruendo contro la versione sbagliata di SWT. O scaricare Eclipse a 64 bit o afferrare il delta pack e costruire contro l'ambiente di destinazione corretto.

+0

Che cos'è il "pacchetto delta"? Sono curioso di una soluzione generica, perché mi piacerebbe che la mia applicazione SWT selezionasse dinamicamente il jar corretto. Inoltre, è necessario tenere presente che SWT deve essere la stessa versione della macchina virtuale, non necessariamente come O/S. –

+0

Il delta pack non ti permette di fare nulla di "dinamico", ti dà solo la possibilità di costruire per qualsiasi bersaglio da qualsiasi obiettivo. http://louismrose.wordpress.com/2009/01/23/installing-the-rcp-delta-pack-for-eclipse/ – andyczerwonka

6

Ho affrontato gli stessi problemi un paio di settimane fa. Sviluppiamo un'applicazione RCP che deve utilizzare SWT a 32 bit, ma lavoriamo su macchine a 64 bit.

Quello che dovevamo fare era di modificare le configurazioni di Eclipse quindi indicò una JVM a 32 bit. L'abbiamo fatto su Finestra -> Preferenze -> Java -> JRE installati. In questa pagina preferenza, abbiamo cambiato tutti i riferimenti da "Programmi" a "Program Files (x86)".

Spero che ti aiuta in qualche modo.

+0

Se stai sviluppando un'applicazione RCP a 32 bit in una versione a 64 bit di Eclipse, devi anche configurare la piattaforma di destinazione dell'applicazione per utilizzare esplicitamente l'architettura x86. Altrimenti Eclipse PDE continuerà a impostare le versioni a 64 bit delle librerie SWT come dipendenze del plugin. –

2

La mia risposta è più meno compilazione di sopra postato risposte, in particolare il commento del @ClickUpvote utente che ha fornito (da mio parere) la migliore risposta. Così qui è, ho provato poco prima di pubblicarlo:

Se l'applicazione genera l'eccezione di seguito (su Windows 7 a 64 bit, con JVM 64)

Exception in thread "main" java.lang.UnsatisfiedLinkError : Impossibile caricare librerie SW T a 32 bit su JVM a 64 bit.

Quindi la soluzione è la seguente: Su JVM a 64 bit è necessario lo SWT a 64 bit.

attuali versioni possono essere scaricate come descritto di seguito - piuttosto ben nascosta:

Stable

Windows, Linux, OS X, more...

di Windows (x86_64) (Versioni supportate) (http) 6.3 MB swt-4.4-win32-win32-x86_64.zip

E questa è esattamente la versione che ti serve.