2010-05-27 18 views
39

Mi aplicación arroja la excepción a continuación.SWT en Windows 64-bit

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

¿Cómo resolver esto? ¿Cuál es el nombre del archivo jar que se necesita?

Respuesta

41

En las JVM de 64 bits necesita el SWT de 64 bits. Las versiones actuales se pueden descargar aquí:

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

Nota las dos primeras descargas, la primera es para x32, y el otro para x64.

Nota: Incluso en Windows 64bit, si usa la JVM de 32 bits, ¡aún necesita la versión SWT de 32 bits!

+3

Esto es correcto, pero solo una nota rápida de que si no tiene control sobre qué SWT se usa (por ejemplo, desarrollar un plug-in en un sistema de 64 bits con su JVM de 64 bits para una aplicación RCP de 32 bits), debe instalar y usar una JVM de 32 bits para ejecutar su producto en lugar de modificar su plataforma objetivo RCP (ver la respuesta de Mario Marinato). – Caspar

+0

@Casper: Correcto. – Daniel

+2

Nueva versión de: [SWT de 64 bits] (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

Simplemente está compilando contra la versión incorrecta de SWT. Descargue el Eclipse de 64 bits o tome el paquete delta y cree en el entorno de destino correcto.

+0

¿Qué es "paquete delta"? Tengo curiosidad acerca de una solución genérica, porque me encantaría hacer que mi aplicación SWT seleccione dinámicamente el contenedor correcto. Además, debe tener en cuenta que SWT debe tener la misma versión que su máquina virtual, no necesariamente como su O/S. –

+0

El paquete delta no te permitirá hacer nada 'dinámico', solo te da la habilidad de construir para cualquier objetivo desde cualquier objetivo. http://louismrose.wordpress.com/2009/01/23/installing-the-rcp-delta-pack-for-eclipse/ – andyczerwonka

6

Me enfrenté a los mismos problemas hace un par de semanas. Desarrollamos una aplicación RCP que debe usar 32 bit SWT, pero trabajamos en máquinas de 64 bits.

Lo que tuvimos que hacer fue cambiar las configuraciones de Eclipse para que apuntaran a una JVM de 32 bits. Lo hicimos en Ventana -> Preferencias -> Java -> JRE instalados. En esta página de preferencias, cambiamos todas las referencias de "Program Files" a "Program Files (x86)".

Espero que te ayude de alguna manera.

+0

Si está desarrollando una aplicación RCP de 32 bits en una versión de 64 bits de Eclipse, también debe configurar la plataforma de destino de la aplicación para usar explícitamente la arquitectura x86. De lo contrario, Eclipse PDE seguirá configurando las versiones de 64 bits de las bibliotecas SWT como dependencias de complementos. –

2

Para el último eslabón de descargas de bibliotecas SWT: SWT project page

+0

+1 Lo estaba buscando solamente, gracias –

2

Mi respuesta es más o menos por encima de recopilación de respuestas, en especial publicado el comentario de la @ClickUpvote usuario que proporciona (por mi opinión) la mejor respuesta. Así que aquí está, he comprobado justo antes de publicarla:

Si su aplicación produce la excepción a continuación (en Windows 7 64 bits, la JVM 64)

Excepción en el hilo "principal" java.lang.UnsatisfiedLinkError : No se pueden cargar bibliotecas SW T de 32 bits en JVM de 64 bits.

Entonces la solución es la siguiente: En las JVM de 64 bits necesita el SWT de 64 bits.

versiones actuales se pueden descargar como se describe a continuación - bastante bien escondido:

Stable

Windows, Linux, OS X, more...

de Windows (x86_64) (Versiones compatibles) (http) 6.3 MB swt-4.4-win32-win32-x86_64.zip

Y esa es exactamente la versión que necesita.

1

Esos enlaces están un poco desactualizados para las descargas de las versiones de 64 bits. Pruebe este: http://jarfiles.pandaidea.com/swt.html, encontrado después de una hora de googlear.