GWT for linux is build against 32bit architecture. It contains some SWT/GTK 32bit modules. So if you try to run it with 64bit java it fails
Exception in thread “main” java.lang.UnsatisfiedLinkError: /opt/tools/sdk/gwt/gwt-linux-1.5.3/libswt-pi-gtk-3235.so: /opt/tools/sdk/gwt/gwt-linux-1.5.3/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:1807)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1703)
at java.lang.Runtime.load0(Runtime.java:770)
at java.lang.System.load(System.java:1003)
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.GWTShell.(GWTShell.java:301)
Could not find the main class: com.google.gwt.dev.GWTShell. Program will exit.
[INFO] ————————————————————————
[ERROR] BUILD ERROR
You have two choices. Find 64bit SWT/GTK modules with same build version (3235 in this case) – good luck! or download 32bit JRE.
I chose second option and it took me 3 mins to resolve the problem.
Find proper JRE version on Oracle site I suggest bin file instead rpm. It unpacks jre to own dir. Move that directory to some convenient location (it doesn’t matter where). Edit gwt.properties *and set java.executable* to java exec located in 32bit JRE.
Now run your GWT hosted mode and be unstoppable developer!
You may have some warnings from GTK, such as
/usr/lib/gtk-2.0/2.10.0/menuproxies/libappmenu.so: wrong ELF class: ELFCLASS64
(GWT:351): Gtk-WARNING **: Failed to load type module: /usr/lib/gtk-2.0/2.10.0
/menuproxies/libappmenu.so
**
But it has no consequences for me, so far…
Some sources say that you should set an environment var:
export LIBXCB_ALLOW_SLOPPY_LOCK=1
to block bugs in X display layer but I don’t know what does it mean :)
In this case I had to hadle with GWT version 1.5.3 (old corporate project)