2009-08-29 6 views
0

Je ne peux pas démarrer mon application GWT en mode hébergé (Debug as -> application web) en utilisant Eclipse. Cela me jette l'exception mentionnée dans le titre. Le débogage Eclipse me montre le code suivant:UnsatisfiedLinkError lors du démarrage du mode hébergé de GWT

/* 
* GOOGLE: Since we're bundling our own version of SWT, we need to be 
* able to tell SWT where its dynamic libraries live. Otherwise we'd 
* have to force our users to always specify a -Djava.library.path 
* on the command line. 
*/ 
String swtLibraryPath = System.getProperty ("swt.library.path"); 
try { 
    String newName = name + "-" + platform + "-" + version; //$NON-NLS-1$ //$NON-NLS-2$ 
    if (swtLibraryPath != null) 
     System.load(swtLibraryPath + System.mapLibraryName(newName)); 
    else 
     System.loadLibrary (newName); 
    return; 
} catch (UnsatisfiedLinkError e1) {  
    try { 
     String newName = name + "-" + platform; //$NON-NLS-1$ 
     if (swtLibraryPath != null) 
      System.load(swtLibraryPath + System.mapLibraryName(newName)); 
     else 
      System.loadLibrary (newName); 
     return; 
    } catch (UnsatisfiedLinkError e2) { 
     throw e1; 
    } 
} 

L'exception étant levée est e1. Je n'ai apporté aucune modification à l'application, je l'ai juste créée et j'ai lancé le débogage.

Qu'est-ce qui me manque? J'utilise Ubuntu 9.04 64 bits (ne sais pas si cette question est importante)

EDIT: pile trace

 Exception in thread "main" java.lang.UnsatisfiedLinkError: /home/rafael/.eclipse/640022211/plugins/com.google.gwt.eclipse.sdkbundle.linux_1.7.0.v200907291526/gwt-linux-1.7.0/libswt-pi-gtk-3235.so: /home/rafael/.eclipse/640022211/plugins/com.google.gwt.eclipse.sdkbundle.linux_1.7.0.v200907291526/gwt-linux-1.7.0/libswt-pi-gtk-3235.so: wrong ELF class: ELFCLASS32 (Possible cause: architecture word width mismatch) 
     at java.lang.ClassLoader$NativeLibrary.load(Native Method) 
     at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1767) 
     at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1663) 
     at java.lang.Runtime.load0(Runtime.java:787) 
     at java.lang.System.load(System.java:1022) 
     at org.eclipse.swt.internal.Library.loadLibrary(Library.java:132) 
     at org.eclipse.swt.internal.gtk.OS.(OS.java:22) 
     at org.eclipse.swt.internal.Converter.wcsToMbcs(Converter.java:63) 
     at org.eclipse.swt.internal.Converter.wcsToMbcs(Converter.java:54) 
     at org.eclipse.swt.widgets.Display.(Display.java:126) 
     at com.google.gwt.dev.SwtHostedModeBase.(SwtHostedModeBase.java:82) 
    Could not find the main class: com.google.gwt.dev.HostedMode. Program will exit.

Répondre

5

Résolu le problème. Après avoir lu la trace de la pile avec plus de soin (merci Warren!), J'ai fini par googler pour différents termes, et j'ai déterminé que la cause était en fait le problème de largeur du mot.

La solution consistait à installer une machine virtuelle Java 32 bits et à dire à Eclipse de l'utiliser à la place de celle de 64 bits. Ceci est fait en installant la nouvelle JVM, en allant dans Fenêtre> Préférences> Java> JRE installés dans Eclipse et en ajoutant votre nouvelle JVM (n'oubliez pas de pointer vers le répertoire jre). Ensuite, je l'ai défini par défaut et j'ai réussi à exécuter l'exemple.

1

Y compris le stacktrace, au moins quelques lignes de celui-ci, peut vraiment aider ceux-ci Comme cela signifie généralement que votre système manque une bibliothèque système d'une certaine forme. Je pense que la variable 'newname' listera la bibliothèque manquante si vous utilisez un débogueur. J'ai également exécuté Ubuntu 9.04, mais pas 64 bits et quand j'ai rencontré une erreur UnsatisfiedLink, c'était dû à la mauvaise version de libstdC++. Cela l'a corrigé pour moi:

sudo apt-get install libstdc++5 
+0

La question d'origine a été modifiée pour inclure la trace de la pile. Essayé d'installer libstdC++ 5, mais pas de changement ... merci pour l'aide! –

Questions connexes