J'essaie de déboguer ce problème mais je ne sais pas exactement où je dois remplacer le fichier SWT jar pour Eclipse.
Configuration système actuelle:
Eclipse Helios 3.6 - 32 Bit
JDK 1.6
JVM - 32 Bit
Windows 7 - 64 Bit
Message d'erreur:
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
Solution de contournement:
Link1 : J'ai compris la cause du problème et j'ai essayé de remplacer le SWT 64 bits en 32 bits mais je ne sais pas si je le fais bien?
téléchargé le fichier 32 bits swt-3.6.1-win32-win32-x86.Zip Extrait le fichier Zip Avoir les fichiers comme indiqué ci-dessous
fichier swt.jar copié navigué vers C:\Program Files\Eclipse\plugins fichier Swt 64 bits supprimé (c'est-à-dire org.Eclipse.swt.win32.win32.x86_64.source_3.6.2.v3659c) placé le fichier swt.jar copié et relancé
Lance toujours la même erreur
a également essayé de renommer le fichier swt.jar en org.Eclipse.swt.win32.win32.x86_64.source_3.6.2.v3659c
Toujours la même ERREUR
Link2 : A suggéré la solution alternative mais n'a pas pu résoudre le problème.
Toujours la même ERREUR
Je ne veux vraiment pas désinstaller 32-JVM et Eclipse 32 bits et installer les versions 64 bits correspondantes.
Pas une OPTION
Solution après la paulsm4 et réponse de Paul Webster & je suis confus
Quand j'ai essayé de l'exécuter pour vérifier la version JVM, JRE dans 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" ) );
}
}
Sortie:
1.6.0_31-b05
JVM Bit size: 32
Cependant, quand j'ai essayé en ligne de commande pour Java - VERSION
Donc, mon système de compréhension a une JVM 64 bits alors qu'Eclispe lit une JVM 32 bits. Alors, comment puis-je détourner le système pour lire la JVM 32 bits?
Eclipse lance votre application avec le JRE que vous avez défini dans votre configuration de lancement. Comme vous exécutez Eclipse 32 bits, vous exécutez/déboguez avec ses bibliothèques SWT 32 bits et vous devrez exécuter un JRE 32 bits.
Votre JRE 64 bits est, pour une raison quelconque, votre JRE installé par défaut.
Pour changer cela, assurez-vous d'abord que vous disposez d'un JRE 32 bits configuré dans la préférence JRE installés. Allez dans Fenêtre -> Préférences et accédez à Java -> JRE installés:
Vous pouvez cliquer sur Ajouter et accéder à votre JVM 32 bits Java_HOME
pour l'ajouter.
Ensuite, dans votre configuration d'exécution, recherchez votre application Eclipse et assurez-vous que le JRE d'exécution est défini sur le JRE 32 bits que vous venez de configurer:
(Notez la zone de liste déroulante qui est mal mise en évidence.)
N'essayez pas de remplacer les bocaux SWT, cela se terminera probablement mal.
Eh bien, duh :) SWT utilise JNI ... et JNI est strictement spécifique à la plate-forme.
Utilisez des bibliothèques 32 bits avec une JVM 32 bits, des bibliothèques 64 bits avec une JVM 64 bits, assurez-vous que les versions correspondent à exactement, et ne mélangez pas.
A MON HUMBLE AVIS...
PS: Vous pouvez avoir plusieurs JVM et/ou plusieurs Eclipse coexistant sur le même boîtier.
j'ai supprimé C:\ProgramData\Oracle\Java\javapath de mon chemin, et cela a fonctionné pour moi.
et assurez-vous d'inclure des adresses JDK et JRE x64 dans votre chemin.
Ajoutez simplement -d32 à VM arguments dans "Modifier les propriétés de configuration de lancement".
J'ai supprimé C:\ProgramData\Oracle\Java\javapath de mon chemin et cela a fonctionné pour moi.
Mais assurez-vous d'inclure les adresses JDK et JRE x64 dans votre chemin.
J'ai également fait face au même problème il y a longtemps.
Voici la solution
Dans Eclipse, cliquez sur "Windows" -> "Préférences" ----> "Java" ---> "JRE installés" ----> Sélectionnez le JDK, cliquez sur "Modifier".
Vérifiez votre chemin JDK, est-il en fonction de votre chemin dans les variables d'environnement définies dans le système. sinon, changez-le en répertoire défini par "chemin".
Donc, assurez-vous simplement que vous êtes dans le bon environnement, c'est-à-dire que les bibliothèques SWT 32 bits doivent correspondre à la JVM 32 bits, et vice versa.
J'ai résolu ce problème en installant jdk 64 bits, jre 64 bits et enfin en ajoutant la définition du chemin jdk dans les variables d'environnement et l'ajout de jre à Eclipse.
Je viens de remplacer le swt.jar dans mon package par la version 64 bits et cela a fonctionné immédiatement. Pas besoin de recompiler l'ensemble du package, remplacez simplement le fichier swt.jar et assurez-vous que le manifeste de votre application l'inclut.
Vérifiez la définition cible si vous travaillez avec un projet RCP-SWT.
Ouvrez l'éditeur cible de et accédez à la définition de l'environnement. Là, vous pouvez définir l'architecture. L'idée est qu'en démarrant votre application RCP, seules les bibliothèques/bundles SWT 32 bits seront chargés. Si vous avez déjà une configuration d'exécution, il est conseillé d'en créer une nouvelle également.
Accédez au chemin C:\ProgramData\Oracle\Java\javapath (ce chemin est dans mon cas peut être différent dans votre cas). Renommez le dossier Oracle avec une autre ligne de nom Oracle_OLD. Et redémarrez le STS/IDE. Ça marche pour moi
Installez un JDK.
Il est possible de faire fonctionner Eclipse avec un JRE, ou du moins c'était le cas auparavant, mais pourquoi s'embêter? Eclipse est beaucoup plus heureux avec un JDK.
N'oubliez pas que le JRE utilisé pour exécuter Eclipse ne doit pas nécessairement être le JRE utilisé par Eclipse pour exécuter une application.
PS. Je suppose ici que le problème de l'affiche d'origine était de faire démarrer Eclipse, et non pas (comme certaines réponses semblent le résoudre) de faire en sorte qu'Eclipse démarre une application.