son - importar librerias en java netbeans
No se pueden cargar bibliotecas SWT de 64 bits en JVM de 32 bits(reemplazando el archivo SWT) (13)
Estoy intentando solucionar este problema, pero no estoy seguro de dónde necesito reemplazar exactamente el archivo jar SWT para Eclipse.
Configuración actual del sistema:
Eclipse Helios 3.6 - 32 Bit
JDK 1.6
JVM - 32 Bit
Windows 7 - 64 Bit
Mensaje de error:
java.lang.UnsatisfiedLinkError: Cannot load 64-bit SWT libraries on 32-bit JVM
at org.eclipse.swt.internal.Library.loadLibrary(Library.java:194)
at org.eclipse.swt.internal.Library.loadLibrary(Library.java:174)
at org.eclipse.swt.internal.C.<clinit>(C.java:21)
at org.eclipse.swt.widgets.Display.<clinit>(Display.java:138)
at org.eclipse.ui.internal.Workbench.createDisplay(Workbench.java:687)
at org.eclipse.ui.PlatformUI.createDisplay(PlatformUI.java:161)
at de.vogella.rcp.intro.first.Application.start(Application.java:18)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:369)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:620)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:575)
at org.eclipse.equinox.launcher.Main.run(Main.java:1408)
at org.eclipse.equinox.launcher.Main.main(Main.java:1384)
An error has occurred. See the log file
Solución:
Link1 : Link1 la causa del problema y traté de reemplazar SWT de 64 bits a 32 bits, pero no estoy seguro de si lo estoy haciendo bien.
archivo de 32 bits descargado swt-3.6.1-win32-win32-x86.zip Extraído el archivo zip Tenga los archivos como se muestra a continuación
el archivo swt.jar copiado navegó a C: / Archivos de programa / eclipse / plugins archivo Swt de 64 bits eliminado (es decir, org.eclipse.swt.win32.win32.x86_64.source_3.6.2.v3659c) colocó el archivo swt.jar copiado y se relanzó
Todavía tira el mismo error
También se intentó cambiar el nombre del archivo swt.jar a org.eclipse.swt.win32.win32.x86_64.source_3.6.2.v3659c
Sigue siendo el mismo error
Link2 : sugirió la solución alternativa pero no pudo resolver el problema.
Sigue siendo el mismo error
Realmente no quiero desinstalar 32-JVM y 32-Bit Eclipse e instalar las versiones correspondientes de 64 bits.
No es una opción
Después de la respuesta de Paul Webster y Paul Webster, estoy confundido.
Cuando intenté ejecutar esto para comprobar JVM, la versión JRE en Eclipse
package javaVersion;
public class JavaVersion
{
public static void main( String[] args )
{
System.out.println( "JRE Version :" + System.getProperty( "java.runtime.version" ) );
System.out.println( "JVM Bit size: " + System.getProperty( "sun.arch.data.model" ) );
}
}
Salida:
1.6.0_31-b05
JVM Bit size: 32
Sin embargo, cuando probé en la línea de comandos para JAVA - VERSIÓN
Así que mi sistema de comprensión tiene JVM de 64 bits, mientras que Eclispe está leyendo JVM de 32 bits. Entonces, ¿cómo puedo desviar el sistema para leer JVM de 32 bits?
Acabo de reemplazar el archivo swt.jar en mi paquete con la versión de 64 bits y funcionó de inmediato. No es necesario volver a compilar todo el paquete, simplemente reemplace el archivo swt.jar y asegúrese de que su manifiesto de aplicación lo incluya.
Bueno, duh :) SWT usa JNI ... y JNI es estrictamente específico de la plataforma.
Use bibliotecas de 32 bits con una JVM de 32 bits, bibliotecas de 64 bits con una JVM de 64 bits, asegúrese de que las versiones coincidan exactamente y no se mezclen.
EN MI HUMILDE OPINIÓN...
PS: Puede tener múltiples JVM y / o múltiples coexistentes de Eclipse en el mismo cuadro.
Compruebe la definición de destino si está trabajando con un proyecto RCP-SWT.
Abra el editor de destino y navegue a la definición de entorno. Allí se puede configurar la arquitectura. La idea es que al iniciar la aplicación RCP solo se cargarán las bibliotecas / paquetes SWT de 32 bits. Si ya tiene una configuración de tiempo de ejecución, es aconsejable crear una nueva también.
Eclipse está iniciando su aplicación con cualquier JRE que haya definido en su configuración de lanzamiento. Ya que está ejecutando el Eclipse de 32 bits, está ejecutando / depurando en sus bibliotecas SWT de 32 bits, y deberá ejecutar un JRE de 32 bits.
Su JRE de 64 bits es, por cualquier motivo, su JRE instalado predeterminado.
Para cambiar esto, primero asegúrese de tener un JRE de 32 bits configurado en la preferencia de JRE instalados. Vaya a Ventana -> Preferencias y navegue a Java -> JRE instalados:
Puede hacer clic en Agregar y navegar a JAVA_HOME
de JVM de 32 bits para agregarlo.
Luego, en la configuración de ejecución, encuentre su aplicación Eclipse y asegúrese de que el JRE de tiempo de ejecución esté configurado al JRE de 32 bits que acaba de configurar:
(Note el cuadro combinado que está mal resaltado).
No intente reemplazar los tarros SWT, eso probablemente terminará mal.
Eliminé C: / ProgramData / Oracle / Java / javapath de mi ruta, y funcionó para mí. Respuesta perfecta, gracias Nikil.
Eliminé C: / ProgramData / Oracle / Java / javapath de mi ruta, y funcionó para mí.
Pero asegúrese de incluir las direcciones x64 JDK y JRE en su ruta.
Entonces, solo asegúrese de estar en el entorno correcto, es decir, las BIBLIOTECAS SWT de 32 bits deben coincidir con la JVM de 32 bits, y viceversa.
Resolví este problema instalando jdk de 64 bits, jre de 64 bits y, finalmente, agregando la configuración de la ruta jdk en las variables de entorno y agregando jre al eclipse.
Instale un JDK.
Es posible hacer que Eclipse se ejecute con un JRE, o al menos solía serlo, pero ¿para qué molestarse? Eclipse es mucho más feliz con un JDK.
Recuerde que el JRE que se usa para ejecutar Eclipse no tiene que ser el JRE que Eclipse usa para ejecutar una aplicación.
PD. Supongo que aquí el problema del póster original era hacer que Eclipse comenzara, y no (como algunas otras Respuestas parecen abordar) lograr que Eclipse inicie una aplicación.
Simplemente agregue -d32 a los argumentos de la VM en "Editar las propiedades de configuración de lanzamiento".
También enfrenté el mismo problema hace mucho tiempo.
Aquí está la solución
En Eclipse, haga clic en "Windows" -> "Preferencias" ----> "Java" ---> "JRE instalados" ----> Seleccione el JDK, haga clic en "Editar".
Verifique su ruta JDK, de acuerdo con su ruta en las variables de entorno definidas en el sistema. Si no es así, cámbielo al directorio definido "ruta".
Vaya a la ruta C: / ProgramData / Oracle / Java / javapath (esta ruta es, en mi caso, podría ser diferente en su caso). Cambie el nombre de la carpeta ORACLE con otra línea de nombre ORACLE_OLD. Y reinicie el STS / IDE. Esto funciona para mi
Quité C: / ProgramData / Oracle / Java / javapath de mi ruta, y funcionó para mí.
y asegúrese de incluir las direcciones x64 JDK y JRE en su ruta.